我有三个连接的表。
packages(parent) -> routes(child) -> items(grandchild)
我必须使用laravel eloquent找到包ID的所有项目我知道这可以通过使用join来完成但是如果使用eloquent我们会怎么做
+---------+ +-----------------------+ +---------------------+
|packages | | routes | | items |
+---------+ +-----------------------+ +---------------------+
|id | name| |id | package_id |name | |id | route_id |name |
| 1 | P1 | | 1 | 1 | R1 | | 1 | 1 | I1 |
| 2 | P2 | -> | 2 | 1 | R2 | -> | 2 | 1 | I2 |
| 3 | P3 | | 3 | 2 | R3 | | 3 | 2 | I3 |
| 4 | P4 | | 4 | 2 | R4 | | 4 | 1 | I4 |
| 5 | P5 | | 5 | 3 | R5 | | 5 | 3 | I5 |
+---------+ +-----------------------+ +---------------------+
Pacakge模型
这里我必须得到这个
class Package extends Model
{
public function items(){
return $this->...;
}
}
结果(属于package_id = 1的项目)
+-----------------------+
|id | route_id | name |
+-----------------------+
| 1 | 1 | I1 |
| 2 | 1 | I2 |
| 3 | 2 | I3 |
| 4 | 1 | I4 |
+-----------------------+
有没有办法使用雄辩的
来做到这一点提前致谢
答案 0 :(得分:1)
你需要这样做:
class Package extends Model
{
public function items()
{
return $this->hasManyThrough('App\Item', 'App\Route',
'package_id', 'route_id', 'id');
}
}