【发布时间】:2023-03-10 06:41:01
【问题描述】:
我有一个 Laravel 7 项目和这个数据库结构:
races participants bibs coords
------- -------------- ------ --------
id id id id
race_id bib_id
bib_id [...]
关系是:
1 race => N participants ( races.id = participants.race_id )
1 participant => 1 bib ( participants.bib_id = bibs.id )
1 bib => N coords ( bibs.id = coords.bib_id )
所以也表示:participants.bib_id = coords.bib_id
我想获取与特定种族相关的所有坐标。 我这样做的方式是使用这样的查询生成器:
class Race extends Model
{
public function getCoords()
{
return Coord::join('participants', 'participants.bib_id', '=', 'coords.bib_id')
->where('participants.race_id', $this->id)->select('coords.*')->get();
}
}
在这里我可以做到:
$coords = Race::find(1)->getCoords();
它按预期工作,但我正在寻找一种使用 Eloquent 的方法,以便更容易与更多的关系和东西链接。
我用belongsToMany 和hasManyThrough 尝试了很多东西,但没有任何效果。我想知道这是否可能?
【问题讨论】:
标签: php mysql laravel eloquent laravel-query-builder