我正在尝试获取内部联接模型的单列。
$items = Item::with('brand')->get();
这也为我提供了整个brand
对象,但我只想要brand.brand_name
$items = Item::with('brand.brand_name')->get();
对我不起作用。
我怎样才能做到这一点?
答案 0 :(得分:2)
这将获得相关模型(另一个查询),只包含您想要的列(id,见下文):
$items = Item::with(['brand' => function ($q) {
$q->select('id','brand_name'); // id is required always to match relations
// it it was hasMany/hasOne also parent_id would be required
}])->get();
// return collection of Item models and related Brand models.
// You can call $item->brand->brand_name on each model
另一方面,您可以简单地加入您需要的东西:
$items = Item::join('brands', 'brands.id', '=', 'items.brand_id')
->get(['items.*','brands.brand_name']);
// returns collection of Item models, each having $item->brand_name property added.
我猜Item
属于Brand
,表名为items
和brands
。如果没有,请相应地编辑这些值。
答案 1 :(得分:1)
试试这个:
$items = Item::with(array('brand'=>function($query){
$query->select('name');
}))->get();