可以在一个查询中执行这些操作吗?
$detail = Goods::find(1);
$detail->pictures = $detail->pictures()->lists('link');
// output
[
'id' => 1,
'name' => 'IPhone',
'pictures' => [
0 => 'http://whatever.com/1.jpg',
1 => 'http://whatever.com/2.jpg',
],
]
我试过这个
Goods::with(['pictures' => function($query){
$query->select('link');
}])->find($id);
没有预期的输出
答案 0 :(得分:0)
您还需要选择外键。您可以使用toArray()
将集合转换为数组:
Goods::with(['pictures' => function($query){
$query->select('link', 'good_id');
}])->find($id)->toArray();
答案 1 :(得分:0)
根据您的上述查询,如果没有密钥,您如何知道哪个Good
属于哪个Picture
? Eloquent也不知道,所以它无法匹配相关的模型。
这就是你需要的:
$good = Goods::with(['pictures' => function($query){
$query->select('id', 'good_id', 'link');
}])
->find($id);
然后您可以将集合的pluck
方法用作:
$good->pictures = $good->pictures->pluck('link');