не удается вернуть одну запись, когда var_dump показывает

#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')));
}