Laravel' with'和嵌套关系

时间:2017-07-04 17:46:44

标签: laravel

我正在检索一些关系:

$requirements = Requirement::with([
            'countryMatch',
            'applier',
            'doc' ])->get();

和我的模型要求包含:

public function doc()
{
    return $this->belongsTo(Doc::class);
}

现在一切都很好。

由于我的Doc模型有自己的关系:

public function translation($language = null)
{
    if ($language == null) {
        $language = /*App::getLocale()*/'en';
    }
    return $this->hasMany('App\DocTranslation')->where('language', '=', $language);
}

我想直接在第一个'中找到这种关系。声明,如下:

$requirements = Requirement::with([
        'countryMatch',
        'applier',
        'doc->translation()' ])->get();

但我收到错误:

Call to undefined relationship [doc->translation()] on model [App\Requirement].

那是因为关系翻译在Doc模型中而不是在Requirement中。

2 个答案:

答案 0 :(得分:0)

嵌套with()调用使用点表示法,而不是对象表示法。将其更改为'doc.translation'。请注意,我不确定您是否可以急切地加载包含应用程序逻辑的关系。

答案 1 :(得分:0)

对于嵌套关系,请使用dot like announcement.advertiser

$requirements = Requirement::with([ 'countryMatch', 'applier', 'doc', 'doc.translation'])->get();