Php Laravel 5.4如何处理JSON与关系?

Php Laravel 5.4如何处理JSON与关系?,php,json,laravel,laravel-5,laravel-5.4,Php,Json,Laravel,Laravel 5,Laravel 5.4,我想用Laravel响应JSON,我的CategoryModel属于SongModel 这是我的分类模型 class CategoryModel extends Model { protected $table = 'categories'; protected $fillable = [ 'id', 'name', ]; public function song() { return $this->

我想用Laravel响应JSON,我的CategoryModel属于SongModel

这是我的分类模型

class CategoryModel extends Model
{
    protected $table = 'categories';
    protected $fillable = [
        'id',
        'name',
    ];

    public function song()
    {
        return $this->hasMany(SongModel::class);
    }
}
这是我的歌曲模型

class SongModel extends Model
{
    protected $table = 'songs';
    protected $fillable = [
        'id',
        'name',
        'url',
        'categories_id',
        'singers_id',
        'types_id',
    ];

    public function category()
    {
        return $this->belongsTo(CategoryModel::class);
    }
}
我想用这个关系来响应JSON。我写道:

class SongController extends Controller
{
    public function index(SongModel $songModel)
    {
        $song = $songModel->category()->get();
        return response()->json(["DATA" => $song], 201);
    }
}

试试这个<代码>返回响应()->json([“数据”=>$songModel->load('category')->toArray()],201)

试试这个<代码>返回响应()->json([“数据”=>$songModel->load('category')->toArray()],201)

要执行此操作,您只需在返回响应之前加载关系:

public function index(SongModel $songModel)
{
    $songModel->load('category');

    return response()->json(["DATA" => $songModel], 201);
}


希望这有帮助

要执行此操作,您只需在返回响应之前加载关系:

public function index(SongModel $songModel)
{
    $songModel->load('category');

    return response()->json(["DATA" => $songModel], 201);
}


希望这有帮助

,您可以将
与('song')


,您可以将
与('song')一起使用



它向我显示类别为空。{“DATA”:{“category”:null}@Vichit对不起,我不是要把负载分配给
song
。我已经更新了我的答案。例如,我想这样回应{“数据”:[{“id”:3,“name”:再见,“url”:“…“category_id”:2,“category”:{“id”:2,“name”:“…”,}]}@Vichit您是否更新了我编辑的两部分,即您应该返回
$songModel
而不是
$song
?@Vichit是否回答了您的问题?它显示类别为空。{“DATA”:{“category”:null}@Vichit对不起,我不是要把负载分配给
song
。我已经更新了我的答案。例如,我想这样回应{“数据”:[{“id”:3,“name”:再见,“url”:“…“category_id”:2,“category”:{“id”:2,“name”:“…”,}]}@Vichit你更新了我编辑的两个部分了吗,即你应该返回
$songModel
而不是
$song
?@Vichit回答你的问题了吗?它向我显示如下:{“数据”:{“类别”:null}@Vichit哦,我明白了。可能控制器中的
$songModel
为null,因此在响应中返回null。我认为路由模型绑定的代码定义不正确。@ImPerat0R\u 2那么,我能做什么?这是我的路由。路由::资源('/api/v1/songs',SongController',['only'=>['index','show',]]);它向我显示如下:{“数据”:{“类别”:null}}@Vichit噢,我明白了。可能控制器中的
$songModel
为null,因此在响应中返回null。我认为路由模型绑定的代码定义不正确。@ImPerat0R\u 2那么,我能做什么?这是我的路由。路由::资源('/api/v1/songs',SongController',['only'=>['index','show',]]);非常感谢你的回答:D非常感谢你的回答:D