通过findMany选择列并在Laravel的Eloquent中保持关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过findMany选择列并在Laravel的Eloquent中保持关系相关的知识,希望对你有一定的参考价值。

我正在努力获得帖子和作者。但是,我只需要帖子的标题和作者信息。

这是我正在运行的查询:

// I want post titles with IDs of 1, 2, 3, 4 and 5 and the author of each one
Post::with('author')->findMany([1, 2, 3, 4 , 5], ['post_title');

生成的集合具有post_title罚款,但作者关系为空。

但是,如果我跑:

Post::findMany([1, 2, 3, 4, 5])->with('author');

我可以访问$post->author->first_name中的作者。

如果我指定了我需要的列,我不明白为什么关系会丢失。

那么,如何查询posts表,指定我想选择哪些列并保持与作者的关系?

答案

你必须选择Post id,因为当你使用with方法时它意味着你正在使用Laravel Eager Loading,Eager Load需要Post id来加载author

Post::with('author')->findMany([1, 2, 3, 4 , 5], ['id','post_title');

以上是关于通过findMany选择列并在Laravel的Eloquent中保持关系的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent 关系 findMany 或 find

如何从多个表中选择列并在 yii 框架中显示

prisma2:如何通过 prisma.user.findMany() 中的非必填字段进行过滤?

返回 Laravel 中模型的特定列并转换为 Json

从 Laravel 中的 Mysql Pivot 表中获取列并返回 JSON 对象

Laravel:如何查询包含json数据的表中的列并仅返回查询匹配的对象