Laravel Eloquent With()With()

Sco*_*son 5 laravel eloquent

我如何使用多个Eloquent With()?

PortalPlaylistElement模型

class PortalPlaylistElement extends Model
{
    public $primaryKey = 'code';
    public $incrementing = false;
    public $timestamps = false;

    public function AirtimePlaylists()
    {
        return $this->hasOne('App\AirtimePlaylist','id','playlist_id');
    }
}
Run Code Online (Sandbox Code Playgroud)

AirtimePlaylistContent模型

class AirtimePlaylistContent extends Model
{
    protected $table = 'cc_playlistcontents';
}
Run Code Online (Sandbox Code Playgroud)

AirtimePlaylistModel

class AirtimePlaylist extends Model
{
    protected $table = 'cc_playlist';

    public function PortalPlaylistElements()
    {
        return $this->belongsTo('App\PortalPlaylistElement','playlist_id');
    }

    public function AirtimePlaylistContents()
    {
        return $this->hasMany('App\AirtimePlaylistContent','playlist_id');
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有遇到任何问题:

AirtimePlaylist::with('AirtimePlaylistContents')->get());
Run Code Online (Sandbox Code Playgroud)

要么

PortalPlaylistElement::with('AirtimePlaylists')->get();
Run Code Online (Sandbox Code Playgroud)

但我想在属于PortalPlaylistElement的AirtimePlaylist中获取所有AirtimePlaylistContents.

本质上,(伪代码)

PortalPlaylistElement::with('AirtimePlaylists')::with('AirtimePlaylistContents')->get();
Run Code Online (Sandbox Code Playgroud)

huu*_*uuk 21

您需要嵌套Eager Looading

PortalPlaylistElement::with('AirtimePlaylists.AirtimePlaylistContents')->get();
Run Code Online (Sandbox Code Playgroud)


Ach*_*dja 7

嵌套关系

 with('relation1.relation2.relation3')->get(); // relation1 has relation2 relation2 has relation 3
Run Code Online (Sandbox Code Playgroud)

非嵌套关系

 with('relation1','relation2','relation3')->get(); // you model has all relations
Run Code Online (Sandbox Code Playgroud)


Dan*_*ouf 5

如果有人需要的话我想添加这个

 with(['relation1.relation2-1','relation1.relation2-2'])->get(); // relation1 has relation2-1 and relation1 also has relation2-2
Run Code Online (Sandbox Code Playgroud)