【发布时间】:2021-09-28 15:00:42
【问题描述】:
考虑书籍和作者的关系。每本书 belongsTo 一位作者和 1 个作者 hasMany 本书。 Books 表具有(Id、Title、Version 等)等字段,作者具有(Id、Name、Address 等)等字段。注意 DB 列不遵循默认的 laravel 命名约定。
现在;我想从两个表中获取 一些字段。更具体一点,我想要 title、version、name 和 address 字段。 这是所需的输出:
{
Title: "Oxford Maths",
Version: "2.5",
author: "John Doe",
}
第一次试用:
return Book::with('author')->get()->map(function ($book) {
return collect($book)->only(
[
'Title',
'Version',
"author"
]);
});
第一次试验输出:
{
Title: "Oxford Maths",
Version: "2.5",
author: {
Id: 1,
Name: "John Doe",
Address: "Tanzania",
deleted_at: null
}
}
第二次试用:试过这个;
return Book::with([
'author' => function($query){
$query->select('Name','Id');
}
])->get()->map(function ($data) {
return collect($data)->only(
[
'Title',
'Version',
"author"
]);
});
还有这个;
return Book::with('authority:name,Id')->get()->map(function ($data) {
return collect($data)->only(
[
'Title',
'Version',
"author"
]);
});
第二次试验输出:
{
Title: "Oxford Maths",
Version: "2.5",
author: {
Name: "John Doe",
Id: 1
}
}
第三次试用:
return Book::with([
'author' => function($query){
$query->select('Name'); // *Removed foreignKey*
}
])->get()->map(function ($data) {
return collect($data)->only(
[
'Title',
'Version',
"author"
]);
});
第三次试验输出:
{
Title: "Oxford Maths",
Version: "2.5",
author: null
}
我可以做些什么来获得所需的输出?
【问题讨论】:
-
Book::with('author : title, version, name , address, author_id')->get();这有帮助吗?
-
@psa 试过但没有用。
-
Book 表中是否有 author_id 字段?
-
是的,有一个,关系是一对多的。
标签: php laravel eloquent laravel-8 laravel-collection