Laravel Eloquent With() With()

15

如何使用多个 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模型

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个回答

36

你需要嵌套预加载

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

1
非常准确 - 我已经成功地进一步嵌套了额外的模型。非常感谢 - 现在我知道该寻找什么,我会好好阅读它们的。 - Scott Robinson

12

嵌套关系

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

不嵌套的关系

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

但是在 'with' 内部的 'where clauses' 似乎被忽略了... 有谁知道如何处理这些情况吗? - Kang Andrew
你能展示一下你已经尝试过的吗?这样我就可以更好地了解你想要实现什么! - Achraf Khouadja

5

如果有人需要,我想补充一下这个内容。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接