Php Laravel关系限制所有结果,而不是特定于模型的结果
我有一个嵌套关系,如:Php Laravel关系限制所有结果,而不是特定于模型的结果,php,mysql,laravel,Php,Mysql,Laravel,我有一个嵌套关系,如: Model One有许多Model two,其中有许多Model two 目的是获取所有车型及其车型二,并且对于车型二中的每一个,仅获取最新的车型三 我试过: 返回ModelOne::with(['modelTwos.latestModelThree']) ->分页(); 但这只是给出了最后一个模型一的模型二的模型三 所有其他Model two响应中没有Model two Model Two类上的latestmodeltree方法为: 公共函数latestModelTh
Model One
有许多Model two
,其中有许多Model two
目的是获取所有车型
及其车型二
,并且对于车型二
中的每一个,仅获取最新的车型三
我试过:
返回ModelOne::with(['modelTwos.latestModelThree'])
->分页();
但这只是给出了最后一个模型一的模型二的模型三
所有其他Model two
响应中没有Model two
Model Two
类上的latestmodeltree
方法为:
公共函数latestModelThree()
{
返回$this->hasMany(modeltree::class)
->最新
->限额(1);
}
将larestmodeltree()
关系更改为hasOne()
并取消限制应该可以做到:
public function latestModelThree()
{
return $this->hasOne(ModelThree::class)
->latest();
}
这有点老套,如果您需要N个关系项而不是单个关系项,则不会解决问题。但是,它解决了您的问题。Elias Soares的答案确实有效,但会导致大型数据集出现重大性能问题
一个更高性能的解决方案是使用此软件包:虽然这确实有效,但在处理许多型号3时,它会导致严重的性能问题