【发布时间】:2019-09-09 06:50:44
【问题描述】:
我正在尝试创建一个通用方法,该方法能够根据我在代码中处理的“实体”保存来自不同模型的所有数据。正如你在下面看到的,我有一个变量 $entity 我想决定加载一个模型,然后从它调用一个方法。
我的示例中的两条注释行显示了我想要实现的目标,但它们不起作用。未注释(非动态)行 $this->companylocation_model->save(...) 工作正常。
注释实验给出了这个错误:call_user_func() expects parameter 1 to be a valid callback, class '$this->companylocation_model' not found。对我来说很奇怪,因为我正在将该模型加载到它之前的行中。
我也试过用反斜杠转义 > 但这也不起作用。
public function submit($entity) // $entity is set to companylocation during method call
{
$filledEntityObject = $this->getEntityDataFromForm($entity);
$this->load->model($entity . '_model');
$this->companylocation_model->save($filledEntityObject, $filledEntityObject->id);
//call_user_func(array('$this->' . $entity . '_model', 'save'), $filledEntityObject, $filledEntityObject->id);
//call_user_func('$this->' . $entity . '_model->save', $filledEntityObject, $filledEntityObject->id);
...
预期的结果是能够以动态方式从具有两个参数的模型中调用save 方法。
【问题讨论】:
-
未尝试但
$this->{$entity . '_model'}->save(...)(使用正确的参数)是否有效? (对于旧版本,您可能需要使用$name = $entity . '_model';和$this->$name->save(...)- 再次不确定) -
谢谢@NigelRen!
$this->{$entity . '_model'}->save($filledEntityObject, $filledEntityObject->id)完成了这项工作
标签: php codeigniter dynamic model