laravel - 同一个调用中的两个 laravel 关系
问题描述
我有一个 Usercontract 表和模型......我可以用它的关系来调用 usercontracts
return UserContract
::with(['contracttax', 'contractproperty', 'persons', 'contractwarranty', 'users', 'contracts', 'tags'])
->orderBy('created_at', 'desc')->get();
然后我有另一个使用这种方法的用户模型。
public function nonAcceptedContracts()
{
return $this->belongsToMany(UserContract::class, 'invite', 'email', 'usercontract', 'email')->where('status', 'pending');
}
有没有办法将此“nonAcceptedContracts”与来自 Usercontract 的其他关系一起调用?所以我最终将所有结果放在同一个变量上?
解决方案
Laravel 允许你链接关系。在您的情况下,您希望在模型中包含users
关系UserContract
,以及在模型中包含nonAcceptedContracts
关系User
。只需.
在关系上使用点 ( ) 表示法:
return UserContract::with([
'contracttax',
'contractproperty',
'persons',
'contractwarranty',
'users.nonAcceptedContracts', // Note: This will include both `users` and `nonAcceptedContracts`
'contracts',
'tags'
])->orderBy('created_at', 'desc')
->get();
现在,在迭代UserContract
结果时,您可以访问users
and nonAcceptedContracts
:
foreach ($userContracts as $userContract) {
foreach ($userContract->users as $user) {
// Do something with `$user->nonAcceptedContracts` ...
}
}
有关完整信息,请参阅https://laravel.com/docs/8.x/eloquent-relationships#nested-eager-loading
推荐阅读
- python - Python 的正则表达式 .match() 函数与多行字符串不一致
- python - 如何从 python 脚本中选择文本文件中的某些行?
- rust - 无法编译:将 try_buffer_unordered 与 StreamExt 映射一起使用
- r - 将县名标签添加到州地图
- swift - IOS Swift - 无法从 json 响应中解码所有键
- docker - 为什么我的 metricbeat 扩展忽略我在 Kibana docker 中的 ActiveMQ 代理主机配置?
- r - 使用 R Shiny 切换对象(作为表格)
- laravel - Laravel 8 和 Vue 3 与 axios - 分页
- presto - 在 Presto 中将数组(双精度)转换为 varchar
- kotlin - Gradle:如何在运行另一个任务的 Kotlin 中编写任务?