在:: with上选择某些属性

时间:2014-07-29 19:49:44

标签: laravel laravel-4 eloquent

我有一个包含大量数据的成员表。我想查看" Alarms"包含会员的姓名,但没有关于该会员的其他信息。

我目前正在使用

Alarm::with('member')->get();

返回与member_id相关的所有警报数据所有成员数据。

我想要的是指定"成员"数据只返回" name"没有其他成员。

通常可以使用

完成
Member::select('name')->get();

但我想知道如何通过急切加载来实现该结果,而无需编辑模型并添加到"隐藏"因为我在其他电话中需要数据。

1 个答案:

答案 0 :(得分:0)

Alarm::with(['member' => function ($q) {
  $q->select('id', 'name');
}])->get();

需要考虑的一些事项:

  1. select不会像上面那样为belongsToMany(多对多)关系工作,因为它已被窃听。
  2. 您需要选择primary key / foreign key(取决于关系)才能让Eloquent将相关模型与其各自的父母匹配
  3. 如果您想通过某种JSON API输出数据,我建议改用变换器 - 例如fractal