如何从 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 |
+------------------------------------+
“最后一个事件”列基于“曲目”table 的最新数据,但值“正确”是“曲目”table 与“事件”table。因此,在这个 table 中,曲目 table 中的最新记录是 id 为 9,event_id
为 12,事件 table 中的 event_id
为 12有 name
列包含值 RIGHT
。我想抓住它在前端显示的那个值。这是我在数据库中的 table。
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|
+----------+
如果我使用 has one relationship with latestOfMany()
方法,它没有到达事件 table。如何根据main_id通过Trackstable的最新数据到达Eventstable去抓取Eventstable中的值?谢谢!
你可以使用 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);
如何与eloquent建立深厚的感情?我正在尝试像这样显示数据:
+------------------------------------+
| Main ID | Name | SN | Last Event |
|------------------------------------|
| 12 | James | j89 | RIGHT |
+------------------------------------+
“最后一个事件”列基于“曲目”table 的最新数据,但值“正确”是“曲目”table 与“事件”table。因此,在这个 table 中,曲目 table 中的最新记录是 id 为 9,event_id
为 12,事件 table 中的 event_id
为 12有 name
列包含值 RIGHT
。我想抓住它在前端显示的那个值。这是我在数据库中的 table。
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|
+----------+
如果我使用 has one relationship with latestOfMany()
方法,它没有到达事件 table。如何根据main_id通过Trackstable的最新数据到达Eventstable去抓取Eventstable中的值?谢谢!
你可以使用 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);