【问题标题】:Select certain properties on ::with在 ::with 上选择某些属性
【发布时间】:2014-09-21 07:44:52
【问题描述】:

我有一个包含大量数据的成员表。我想查看包含成员姓名的“警报”列表,但没有关于该成员的其他信息。

我正在使用

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

返回所有报警数据与member_id关联的所有会员数据。

我想要的是指定“成员”数据只返回“名称”,而不是其他成员。

这通常可以通过

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

但我想知道如何通过预先加载无需编辑模型并添加到“隐藏”中来实现该结果,因为我将需要其他调用中的数据。

【问题讨论】:

    标签: laravel laravel-4 eloquent


    【解决方案1】:
    Alarm::with(['member' => function ($q) {
      $q->select('id', 'name');
    }])->get();
    

    需要考虑的几点:

    1. select 不适用于上面的 belongsToMany(多对多)关系,因为它有问题。
    2. 您需要选择primary key / foreign key(取决于关系)才能让 Eloquent 将相关模型匹配到各自的父节点
    3. 如果你想通过某种 JSON api 输出数据,我建议改用转换器 - 例如fractal

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      • 2017-05-01
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多