是否有一种方法可以仅限制在laravel中嵌套加载中可以选择的列数。目前,我有3个相互关联的模型。例如,假设我们有publisher模型、authors模型和books模型。
出版商与作者有关系,作者与书的模型也有关系。
发布者模型包含以下列:
身份证件
名称
地址
传真号码
电子邮件地址
作者的模型包括:
身份证件
名称
地址
电子邮件
出版书籍
出版商
这些图书模型包括:
身份证件
标题
作者编号
发表于
类别
如果我想查看某个特定出版公司出版的书籍:这就是我获取记录的方式
$published_books::Publisher::with('authors.books')->take(1);
有了这个,我得到了这样的回答:
"id" : 1,
"name" : "Longhorn Ke",
"address" : "14th Street",
"fax number" : "null",
"email_address" : "longhorn@mail.com",
"author" :{
"id" : 4,
"name" : patel,
"email" : patelguru@mail.com,
"published_books" : 12,
"publishers_id" : 1,
"books" : {
"id": 1,
"title" : "Art of life",
"authors_id" : 1,
"published_on" : "2020-07-12 14:22:25",
"category" : "Life teachings",
}
}
我想要的是,当我通过关系加载一本书时,我只想获得出版商的名称、作者的名称和书籍的详细信息,如下所示:
"id" : 1,
"name" : "Longhorn Ke",
"author" :{
"id" : 4,
"name" : patel,
"books" : {
"id": 1,
"title" : "Art of life",
"authors_id" : 1,
"published_on" : "2020-07-12 14:22:25",
"category" : "Life teachings",
}
}
我怎样才能用雄辩的语言做到这一点。在这一点上,我了解到eloquent允许在nester加载上选择特定的列,如本链接所示https://laravel.com/docs/master/eloquent-relationships#eager-加载特定列,但如何在所有模型中实现上述代码结果
1条答案
按热度按时间kt06eoxx1#
对于您需要的最顶级型号
select()
; 为了你需要的关系relationship:id,...
: