Laravel擅长使用关系数据(急切加载)

时间:2019-03-19 11:53:41

标签: laravel eloquent eager-loading

我有两个数据库表itemsmeasurement_units-项目具有度量单位。

现在的问题是我想选择来自items的特定列和来自measurement_unit的某些列。我想使用急切加载

例如

$items_with_mu = Item::with("measurement_unit")->select(["item_name", "item_stock"])->first();

访问measurement_unit时。它返回 null 。没有选择功能,它将返回数据(measurement_unit)。

$items_with_mu->measurement_unit;

任何人都可以帮我,对不起我的英语。

2 个答案:

答案 0 :(得分:1)

尝试一下

Item::with(['measurement_unit' => function($q) { 
           $q->select('id','unit_column');   //specified measurement_unit column
      }])
     ->select('id','measurement_unit_id','item_name')
     ->get();

如果您的laravel版本> = 5.5,则可以单行编写

Item::with('measurement_unit:id,unit_column')
     ->select('id','measurement_unit_id','item_name')
     ->get()

答案 1 :(得分:0)

您必须选择主要模型的主列,如下所示。

 items_with_mu = Item::with("measurement_unit")->select(["item_name", "item_stock", "primary_key"])->first();