【发布时间】:2022-01-08 19:42:24
【问题描述】:
我有以下设计字段的数据透视表。
role_id | module_id | task_id
1 1 1
1 1 2
1 1 3
这是我对角色模型的关系。
class Role extends Model
{
use HasFactory;
public function modules(){
return $this->belongsToMany(Module::class,'role_module_tasks','role_id','module_id')
->withPivot(['task_id'])
->using(RoleModuleTask::class);
}
}
还有 RoleModuleTask 模型(数据透视表)上的另一个 belongsTo 关系。
class RoleModuleTask extends Pivot
{
use HasFactory;
public function task(){
return $this->belongsTo(Task::class,'task_id');
}
}
我尝试如下调用查询。
@foreach (something()->modules as $module)
Module:{{$module->name}} (Task:{{$module->pivot->task->name}} <br>
@endforeach
然后,我用 laravel 调试栏检查查询语句,得到了如下一百多个查询。
select * from `tasks` where `tasks`.`id` = 1 limit 1
select * from `tasks` where `tasks`.`id` = 2 limit 1
select * from `tasks` where `tasks`.`id` = 3 limit 1
.... so on
我想为 belongsTo 关系做急切加载。对此的任何建议或指导将不胜感激,谢谢。
【问题讨论】:
标签: laravel eager-loading