【发布时间】:2021-08-26 14:22:27
【问题描述】:
这是有效的:
$clients = Client::with([
'contacts' => function ($query) {
$query
->select('client_id', 'first_name', 'last_name')
->where('contact_type_id', '=', 1);
}])
->orderBy('client_name')
->get(['id', 'client_name', 'city', 'state']);
dd($clients);
但是,我不确定如何在子查询中访问 first_name 和 last_name。它们出现在转储中的“关系”对象中,但在我看来,我正在设想一个我想访问的数据集,
$client->first_name 等
当我尝试将字段添加到最后的 get() 方法时,它无法识别它们,所以我做错了,或者我需要以不同的方式访问子查询字段。
【问题讨论】:
-
如果客户可能有很多联系人,您可以通过
$client->contacts->first()->first_name访问它们;如果客户只有一个联系人,您可以通过$client->contacts->first_name访问它们(尽管在这种情况下,将关系命名为contacts具有误导性)跨度> -
好的,是的,他们有多个联系人,但在这个特定的查询中,我将其限制为仅基于类型的一个联系人。
-
感谢您的帮助!
标签: laravel eloquent laravel-8