book.app/api/v1/lessons 没有数据

keikeizhang
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Lesson;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class LessonsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        // all() is bad
        // 没有提示信息(Yes)
        // 直接展示我们的数据结构
        // 没有错误信息

        $lessons = Lesson::all();
        // return $lessons;
        // exit;
        return \Response::json([
            'status' => 'success',
            'status_code' => 200,
            'data' => $this->transform($lessons)
            //'data' => $lessons->toArray()
        ]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $lesson = Lesson::findOrFail($id);
        return \Response::json([
            'status' => 'success',
            'status_code' => 200,
            'data' => $lesson
        ]);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }

    private function transform($lessons)
    {
        return array_map(function($lesson){
            return [
                'title' => $lesson['title'],
                'content' => $lesson['body'],
                'is_free' => $lesson['free']
            ];
        },$lessons->toArray);
    }
}
JellyBool

index 方法可以触发到的么?

keikeizhang

@JellyBool 可以的,index方法里面注释掉的代码是可以显示json数据的,

这个是 laravel api教程的视频

Peter_Yuan_辉

你先打印一下你的lesson,看能不能从数据库取值,如果不可以,那么就是数据库连接问题了,我猜测是这里有问题了。

keikeizhang

@Peter_Yuan_辉

没有进行字段映射的时候,我60条测试数据和单独的 /id 一条数据都可以正常读取数据和显示JSON数据

keikeizhang

http://book.app/api/v1/lessons

没有进行字段映射前 这个api可以获得60条测试数据

进行字段映射以后,什么数据都没有了

代码我校对几次都没有发现错误

害怕是一个很低级的错误

JellyBool
$lessons->toArray()
keikeizhang

这个是视频教程的代码 @Peter_Yuan_辉

keikeizhang

@JellyBool 谢谢 确实是这个问题,我在后面加上 () 以后完美解决

但是我不知道为什么视频里面的可以没有 () 也出数据

JellyBool

版本问题吧。。。你用的 laravel 5.2 ?

keikeizhang

@JellyBool 做特特意从新安装的 5.1.1版本

keikeizhang

5.1.40 @JellyBool