1

使用 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','abstract','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 关系添加用户?

4

1 回答 1

1

最后这是解决方案,但我只是在用户对象上传递了它的名称(这是我真正需要的)。

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', 'title','abstract', '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()
]);
于 2020-09-21T13:16:17.493 回答