使用Eloquent进行内连接单列

时间:2014-04-29 10:49:21

标签: php orm laravel laravel-4 eloquent

我正在尝试获取内部联接模型的单列

$items = Item::with('brand')->get();

这也为我提供了整个brand对象,但我只想要brand.brand_name

$items = Item::with('brand.brand_name')->get();

对我不起作用。

我怎样才能做到这一点?

2 个答案:

答案 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,表名为itemsbrands。如果没有,请相应地编辑这些值。

答案 1 :(得分:1)

试试这个:

  $items = Item::with(array('brand'=>function($query){
          $query->select('name');
  }))->get();