Laravel 为什么相关的答案模型没有获得项目id?
我有以下几种型号:Laravel 为什么相关的答案模型没有获得项目id?,laravel,eloquent,Laravel,Eloquent,我有以下几种型号: Project <(Many to Many)> Experiment (One to Many)> Question (One to Many)> Answer 如果我添加下一个条件,它就是工作: Project::with['experiments.questions.answers'=>函数$query{$query->where'Project_id',1;}]->find1 但是我如何才能从代码中删除它并使其成为全局性的呢?试试这段代码 P
Project <(Many to Many)> Experiment (One to Many)> Question (One to Many)> Answer
如果我添加下一个条件,它就是工作:
Project::with['experiments.questions.answers'=>函数$query{$query->where'Project_id',1;}]->find1
但是我如何才能从代码中删除它并使其成为全局性的呢?试试这段代码
Project::with('experiments.questions.answers')->find([1])
我不明白为什么这个选择会影响其他项目,但是,如果您想创建一个方便的快捷方式来获取具有关系的项目-在模型或存储库中创建一个方法:
public function findWithExperiments($id) {
$project = Project::find($id);
$project->load(['experiments.questions.answers' => function ($query) use ($id) {
$query->where('project_id', $id);
}]);
return $project;
}
我明白了,这是因为一个实验可以同时涉及id为1的项目和id为2的项目。当你抓到这个实验的时候,你也抓到了第二个项目的问题和答案!Laravel关系不是这样工作的,您必须手动指定这样的特殊情况。