Laravel 5.2渴望加载深层嵌套关系

时间:2016-10-15 13:22:12

标签: php laravel eager-loading relation

我想将一些模型链接在一起如下:

ContentBlock>模板> TemplateFields> fieldValue方法

型号:

class ContentBlock extends Model {
    public function template() {
        return $this->hasOne('\App\Models\Template', 'id', 'template_id');
    }
}

class Template extends Model {
    public function templateFields() {
        return $this->hasMany('\App\Models\TemplateField', 'template_id');
    }
}

class TemplateField extends Model {
    public function fieldValue() {
        return $this->hasOne('\App\Models\FieldValue', 'field_id');
    }
}

控制器:

$contentBlock = \App\Models\ContentBlock::with('template.templateFields.fieldValue')->find(1);

dd($contentBlock->template->templateFields());
// This works

现在,我可以像templateFields()一样深入 但是,如果我进一步关联,我会在Macroable.php第74行得到BadMethodCallException:方法fieldValue不存在'

dd($contentBlock->template->templateFields->fieldValue());

0 个答案:

没有答案