我正在尝试修改1个控制器以使用2个模型。这就是我在控制器中使用loadModel函数所做的事情
public function loadModel($id, $_model)
{
if (isset($_model)){
$model=$_model::model()->findByPk($id); // syntax error, unexpected "::"
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
} else {
$model=Foods::model()->findByPk($id);
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
}
如您所见,我想为此函数创建可选参数,其中第二个参数是Model。你能帮助我实现这个目标吗?
答案 0 :(得分:2)
您不能使用字符串作为类名来调用静态方法。只需实例化模型并调用findByPk
:
if (isset($_model)){
$model = new $_model;
$model= $model->findByPk($id);
答案 1 :(得分:1)
也许会更好
/**
* @var integer $id
* @var string $_model name model class
*/
public function loadModel($id, $_model = 'Foods'){
$model = new $_model;
$model= $model->findByPk($id);
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}