如何使用 eloquent 提取第二个 child table 数据
How to pull second child table data using eloquent
我有三个表,它们是这样连接的。
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 |
+---------+ +-----------------------+ +---------------------+
包装型号
在这里我必须实现这个
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 |
+-----------------------+
有什么方法可以使用 eloquent
提前致谢
你需要这样做:
class Package extends Model
{
public function items()
{
return $this->hasManyThrough('App\Item', 'App\Route',
'package_id', 'route_id', 'id');
}
}
我有三个表,它们是这样连接的。
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 |
+---------+ +-----------------------+ +---------------------+
包装型号
在这里我必须实现这个
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 |
+-----------------------+
有什么方法可以使用 eloquent
提前致谢
你需要这样做:
class Package extends Model
{
public function items()
{
return $this->hasManyThrough('App\Item', 'App\Route',
'package_id', 'route_id', 'id');
}
}