![](/img/trans.png)
[英]Laravel Eloquent - Get Eloquent Relationship Model Data From nested Relationship
[英]How to get data from nested relationship in Laravel 8 Eloquent?
如何与eloquent建立深厚的关系? 我正在尝试像这样显示数据:
+------------------------------------+
| Main ID | Name | SN | Last Event |
|------------------------------------|
| 12 | James | j89 | RIGHT |
+------------------------------------+
“Last Event”列基于“Tracks”表中的最新数据,但“RIGHT”值是“Tracks”表与“Events”表之间的关系。 因此,在此表中,tracks 表中的最新记录是 id 为 9 且event_id
为 12,Events 表中为 12 的event_id
具有包含值RIGHT
的name
列。 我想抓住它以显示在前端的那个值。 这是我在数据库中的表。
Main table
+---------------+
|id | name | sn |
|---------------|
|12 | James| j89|
+---------------+
Tracks table
+-------------------------------------+
|id | main_id | event_id | created_at |
|-------------------------------------|
| 5 | 10 | 10 | 2021-10-12 |
| 9 | 10 | 12 | 2021-11-20 |
+-------------------------------------+
Events
+----------+
|id | name |
|----------|
|10 | LEFT |
|12 | RIGHT|
+----------+
如果我使用与latestOfMany()
方法有一种关系,它不会到达事件表。 如何通过基于 main_id 的 Tracks 表的最新数据到达 Events 表以获取 Events 表中的值? 谢谢!
如果您正确设置了关系,则可以使用Eager Loading深入加载您的关系:
class Main extends Model
{
public function latestTrack()
{
return $this->hasOne(Track::class,'main_id')->latestOfMany();
}
}
class Track extends Model
{
public function event()
{
return $this->belongsTo(Event::class,'event_id');
}
}
现在您可以获得所需的结构:
$main=Main::with('latestTrack.event:id,name')->find(12);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.