繁体   English   中英

如何从 Laravel 8 Eloquent 中的嵌套关系中获取数据?

[英]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具有包含值RIGHTname列。 我想抓住它以显示在前端的那个值。 这是我在数据库中的表。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM