我的模型中有这种关系:
public function modulesData($module) {
return $this->belongsToMany($module)
->withTimestamps();
}
我想要的是急切地加载我的模型的动态关系。但是我该怎么做呢?我使用此代码来急切加载我的关系,但是如何添加参数$module
?
$model->with(['modulesData'])->get();
感谢您的回复。
请考虑以下事项:
定义模型的回退函数:
public function __call($name, $arguments)
{
if (strpos($name, 'modulesData') !== false) {
$nameArray = explode(' ', $name);
$moduleName = ucfirst($nameArray[1]);
$moduleClass = 'App'Modules''' . $moduleName . '''' . $moduleName;
return $this->modulesData($moduleClass);
} else {
return parent::__call($name, $arguments);
}
}
通过以下方式使用 with
函数:
$tal = 'App'Model::with('modulesData ModuleName')->get();
("模块名称"是要用作关系参数的模块的名称(。
这样你就可以急切地加载字符串" modulesData_moduleName
"。当调用with
时,它不会找到该函数,并将回退到__call
,这将提取"moduleName"并调用关系"modulesData"作为参数。
我不知道
如何传递参数,但你可以做这样的事情:
$model->with(['modulesData' => function($q) {
$q->withTimestamps();
}])->get();