我在顺从雄辩的关系时遇到问题。它具有一种使用FieldRole模型的嵌套查询,我认为该模型很糟糕。如果我有一个原始查询,则应使用字段角色的联接及其名称作为一个查询来评估它的名称,但是在这里,它正在执行两个可能无法被雄辩的ORM缓存的查询。
class Team extends Model {
// ...
public function goalkeepers() {
return $this->belongsToMany(
SoccerPlayer::class,
'team_has_players',
'id_teams',
'id_soccer_players'
)->where(
'id_field_role',
FieldRole::where(
'name',
'Goalkeeper'
)
->first()
->getKey()
);
}
}
第二个查询在那里出现
FieldRole::where(
'name',
'Goalkeeper'
)
->first()
->getKey()
有没有一种方法可以使其成为一个查询关系?
答案 0 :(得分:0)
您可以使用JOIN:
public function goalkeepers() {
return $this->belongsToMany(
SoccerPlayer::class,
'team_has_players',
'id_teams',
'id_soccer_players'
)->join('field_roles', function($join) {
$join->on('team_has_players.id_field_role', 'field_roles.id')
->where('field_roles.name', 'Goalkeeper');
});
}