#php #yii
#php #yii
Вопрос:
Я не могу вернуть свою модель. Но когда return var_dump($model)
я смогу увидеть запись. Почему я не могу просто return $model
тогда? Я не вижу никакой ошибки, он просто показывает пустой раздел.
У меня есть это в виджете:
$model = Table::model()->something1();
$id =Yii::app()->request->getQuery('id');
if($model==null){
$model = new Table;
if (isset($_POST['Table'])){
$model->attributes = $_POST['Table'];
$model->product_id = $product_id;
$model->user_id = Yii::app()->user->user_id;
$model->save();
}
}else {
$m = Table::model()->something2($id);
//return var_dump($m[0]); I just want one record
//I also tried just getting $model, doesn't work
//I just want to get the model if it's there is a record
return $m;
}
$this->renderFile(Yii::getPathOfAlias('app.some.path'). '/_form.php',array(
'model' => $model,
));
И это из моей модели:
public function something1(){
$uid = Yii::app()->user->user_id;
$id =Yii::app()->request->getQuery('id');
$criteria = new CDbCriteria;
$criteria->compare('user_id',$uid);
$criteria->compare('product_id',$id);
$criteria->limit = 1;
$record = $this->exists($criteria);
return $record;
}
Комментарии:
1. Я думаю, вы имеете в виду: $this->find($criteria) вместо «существует». Это просто проверяет, существует ли строка, и возвращает логическое значение, а не запись.
Ответ №1:
Ваша функция модели something1()
возвращает логическое значение вместо записи, потому что вы вызываете exists()
вместо find()
.
В качестве альтернативы вы также можете написать всю функцию следующим образом:
public function something1() {
return $this->findByAttributes(array('user_id' => Yii::app()->user->id,
'product_id' => Yii::app()->request->getQuery('id')));
}