【问题标题】:How to select specific columns from nested relationships in a query with Laravel如何在使用 Laravel 的查询中从嵌套关系中选择特定列
【发布时间】:2021-03-12 15:16:02
【问题描述】:

模型 A 与模型 B 具有 BelongsTo。模型 B 与模型 C 具有 BelogsTo

所以,我需要进行查询,我需要从模型 A 中获取 *,从模型 B 中获取 2 列,从模型 C 中获取其他 2 列

ModelA::query()
->with([
'relationModelB' => function ($query) {
$query->select('id', 'column');
},
'relationModelB.relationModelC' => function ($query) {
$query->select('id', 'column');
}
])
->where('id', $id)
->first();

这从A返回所有,从B返回2列,但C返回null。

如果,我尝试这个查询,它返回良好,所有列来自 3 个模型。

ModelA::query()
->with(['relationModelB', 'relationModelB'])
->where('id', $id)
->first();

第一个查询中缺少什么,从关系的关系中获取特定列?

【问题讨论】:

  • 欢迎来到 SO ...您必须确保选择关系所需的任何列(ID、外键)
  • 就像我说的,如果我不指定,列,比如 select * from,一切都很好,但是列太多了......

标签: laravel eloquent


【解决方案1】:

试试下面的

ModelA::query()
    ->with(['relationModelB' => function ($query) {
        $query->with(['relationModelC' => function($query){
            $query->select('id', 'column');
        })
        ->select('id', 'column');
    }])
    ->where('id', $id)
    ->first();

ModelA::query()
    ->with(['relationModelB' => function ($query) {
        $query->with('relationModelC:id,column')
            ->select('id', 'column');
    }])
    ->where('id', $id)
    ->first();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 2020-09-05
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    相关资源
    最近更新 更多