hasManyThrough改变join类型
laravel version
5.8.38
表关联
countries
id - integer
name - string
users
id - integer
country_id - integer
name - string
posts
id - integer
user_id - integer
title - string
表结构用的是5.8文档的,跟我用的表结构差不多。
情况
users 有记录,posts对应没记录,搜索条件需要同时两个表的字段都满足,但是用的innerjoin, 由于posts没记录导致查询不到结果;需要将inner join改成 right join。
解决方法:
我没发现有传参数给join来改变join的类型,所以给hasManyThrough加个join参数,传递给HasManyThrough调用的join。
public function hasManyThrough($related, $through, $firstKey = null, $secondKey = null, $localKey = null, $secondLocalKey = null, string $joinType = 'inner')
$query->join($this->throughParent->getTable(), $this->getQualifiedParentKeyName(), '=', $farKey, $this->joinType);