问题描述
使用Laravel,惯性和Vue,我想返回索引中仅包含必要列的所有帖子,但我想从belongsTo关系中添加用户
这是我尝试过的
return Inertia::render('Posts/Index',[
'posts' => Post::with('user')->get()->all('id','abstract','created_at')
]);
这将返回包括关系中的用户在内的所有帖子,但将返回帖子中的所有列
测试2:过滤列
return Inertia::render('Posts/Index',[
'posts' => Post::all('id','created_at')
]);
这将返回所有只有id,abstract和created_at列的帖子
Test 3: ordered with user
return Inertia::render('Posts/Index',[
'posts' => Post::orderBy('created_at','DESC')->with('user')->get()
]);
这将返回按用户和所有列排序的所有帖子
我的问题是如何返回仅包含选定列的所有帖子,对其进行排序并从belongsTo关系添加用户?
解决方法
最后,这是解决方案,但是我只是在用户对象上传递了名称(这正是我真正需要的名称)。
return Inertia::render('Posts/Index',[
// 'posts' => Post::orderBy('created_at','DESC')->with('user')->get()
'posts'=>Post::select('id','title','abstract','created_at')
->addSelect([
'user'=>User::select('name')
->whereColumn('id','posts.user_id')
并用于传递用户的几列
return Inertia::render('Posts/Index',[
// 'posts' => Post::orderBy('created_at','DESC')->with('user')->get()
'posts' => Post::select('id','created_at')
->addSelect([
'userfirstname' => User::select('firstname') ->whereColumn('id','posts.user_id'),'userlastname' => User::select('familyname') ->whereColumn('id','posts.user_id')
])
->orderBy('created_at','DESC')
->get()
]);
])
->orderBy('created_at','DESC')
->get()
]);