采用可变模型的Laravel 5急切加载

采用可变模型的Laravel 5急切加载,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我试图加载一个由变量classname定义的关系。下面是它的样子: class Dashboard extends Model { public function modules(){ return $this->belongsToMany('App\Module'); } } class Module extends Model { public function model(){ return $this->hasOne(

我试图加载一个由变量classname定义的关系。下面是它的样子:

class Dashboard extends Model {
    public function modules(){
        return $this->belongsToMany('App\Module');
    }
}

class Module extends Model {
    public function model(){
        return $this->hasOne($this->model_class);
    }
}
因此,“model”属性是class
$this->model\u class

当我有一个模块对象和调用

$this->model

我得到了预期的结果。但是当我试着去做的时候

$dashboard->modules()->with('model')->get()


我收到以下错误:
'Symfony\Component\Debug\Exception\FatalErrorException'带有消息“类名必须是有效对象或字符串”
。我假设发生这种情况是因为在实例化模块类之前,没有
model\u class
属性,因此无法加载模型。在这种情况下,如何使用即时加载?谢谢。

我认为您应该考虑解决这个问题。我目前正在使用多态关系,但问题是我最终调用了许多关系来获取仪表板的所有模块。例如,
$dashboard->modulesOfTypeA()
$dashboard->modulesOfTypeB()
$dashboard->modulesOfTypeC()
,然后将结果合并到一个集合中。我更希望能够调用
$dashboard->modules()
它们在数据库级别可能是多态的,但是您没有使用Laravel实现来处理它们,否则您将使用
morphotomy
morphoto
,而不是
belongstomy
hasOne
。尝试一下->belongsTo()@Bogdan我的意思是说我一直在用多态关系做这件事,这是我试图找到更好的方法。如果你看这个例子,这就是我目前的做法。但是,为了找到与标记关联的所有项目,它们调用
$tag->videos()
$tag->posts()
,就像我调用
$dashboard->modulesOfTypeA()
$dashboard->modulesOfTypeB()
一样。在那个例子中,我如何从标签调用所有相关模型,无论是视频还是帖子?我想你应该看看如何解决这个问题。我目前正在使用多态关系,但问题是我最终调用了许多关系来获取仪表板的所有模块。例如,
$dashboard->modulesOfTypeA()
$dashboard->modulesOfTypeB()
$dashboard->modulesOfTypeC()
,然后将结果合并到一个集合中。我更希望能够调用
$dashboard->modules()
它们在数据库级别可能是多态的,但是您没有使用Laravel实现来处理它们,否则您将使用
morphotomy
morphoto
,而不是
belongstomy
hasOne
。尝试一下->belongsTo()@Bogdan我的意思是说我一直在用多态关系做这件事,这是我试图找到更好的方法。如果你看这个例子,这就是我目前的做法。但是,为了找到与标记关联的所有项目,它们调用
$tag->videos()
$tag->posts()
,就像我调用
$dashboard->modulesOfTypeA()
$dashboard->modulesOfTypeB()
一样。在那个例子中,我如何从标签中调用所有相关模型,无论是视频还是帖子?