Laravel Eloquent With()With()

时间:2016-06-01 18:52:04

标签: 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');
    }
}

AirtimePlaylistContent Model

class AirtimePlaylistContent extends Model
{
    protected $table = 'cc_playlistcontents';
}

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');
    }
}

我没有遇到任何问题:

AirtimePlaylist::with('AirtimePlaylistContents')->get());

PortalPlaylistElement::with('AirtimePlaylists')->get();

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

本质上,(伪代码)

PortalPlaylistElement::with('AirtimePlaylists')::with('AirtimePlaylistContents')->get();

3 个答案:

答案 0 :(得分:18)

您需要Nested Eager Looading

PortalPlaylistElement::with('AirtimePlaylists.AirtimePlaylistContents')->get();

答案 1 :(得分:4)

嵌套关系

 with('relation1.relation2.relation3)->get(); // relation1 has relation2 relation2 has relation 3

不是嵌套关系

 with('relation1','relation2','relation3')->get(); // you model has all relations

答案 2 :(得分:1)

如果有人需要,我想补充一下

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