我在Laravel 8项目中有多个DB连接,我无法修改其中一个,这主要用于ROR项目。
我需要从两个表中获取数据,只有当id1, id2
列在两个表中具有相同的值。我在谷歌上找不到任何东西。
我尝试了一些例子,无论是给我N+1查询问题或第二个表o/p总是空
function example()
{
return $this->belongsTo(Model::class, 'id1', 'id1')->where('id2', $this->id2);
}
function example()
{
return $this->belongsTo(Model::class, 'id1,id2', 'id1,id2');
}
我想到了一个解决方案https://laravel.io/forum/06-26-2014-one-to-one-relationship-with-two-fieldscolumns-connection-how
我使用join
与Laravel关系查询:
HouseHold::where("printedcardno","=","17130103-0124")->with(array('members' => function($query)
{
$query->leftJoin('PatientCard', function($join)
{
$join->on('PatientCard.HouseHoldID', '=', 'shp_members.HouseHoldID')
->on('PatientCard.MemberID', '=', 'shp_members.MemberID');
});
}))->get()->take(10)->toArray();
我认为这应该是一个很好的方法,因为它固定了N+1查询问题,并得到所需的o/p。