假设您有一个团队和一个匹配表。团队有多个匹配项,在visitant_id或local_id上有外键(另请参阅https://github.com/laravel/framework/issues/1272)
在团队模型中:
public function allMatches()
{
return $this->hasMany('Match', 'visitant_id')->orWhere('local_id', $this->id);
}
这样做很好:
$team = Team::find(2);
$matches = $team->all_matches;
此查询中的结果:
select *
from `matches`
where `matches`.`visitant_id` = ?
or `local_id` = ?
但是,使用额外的where子句进行扩展时,例如:
$matches = $team->all_matches->where('type','=',1);
查询变为
select *
from `matches`
where `matches`.`visitant_id` = ?
or `local_id` = ? and 'type' = ?
这意味着它选择所有访问者匹配,即使类型不正确,因为该子句周围没有()。有什么办法解决吗?