【问题标题】:Query Relations With Eloquent用 Eloquent 查询关系
【发布时间】:2021-06-10 11:52:08
【问题描述】:

我有 2 个模型。模型Contract有一个(关系)Company

Company 模型上,我有以下关系:

public function contracts()
{
    return $this->hasMany('App\Models\SGC\Contracts\Contract', 'held_by_company_id', 'id');
}

我正在尝试获取与公司关联的所有合同,但由于合同表有很多列,我只想检索 2 个。当我对关系执行函数时,合同为空。

所以,如果我查询合同上的所有内容,我会得到公司数据和相关合同:

$requested_company_data = Company::with('contracts')->findOrFail($request->company_id)->toArray();

考虑优化,因为我想要 2 列,所以我想选择 2 列。当我这样做时,关系是空的,但这是错误的,因为我知道公司 ID 2 有合同。

$requested_company_data = Company::with([
    'contracts' => function ($query) {
        $query->select('id', 'contract_code');
    }
])->findOrFail($request->company_id)->toArray();

我真的没有看到错误...有人可以启发我吗? 谢谢。

【问题讨论】:

标签: php laravel eloquent


【解决方案1】:

自 Laravel 5.5 起,您可以使用 with:column1,column2 指定列:

$requested_company_data = Company::with('contracts:id,contract_code')
            ->findOrFail($request->company_id)
            ->toArray();

【讨论】:

    猜你喜欢
    • 2013-11-30
    • 2013-10-03
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2015-01-21
    • 2017-11-14
    • 2017-01-14
    相关资源
    最近更新 更多