2015-05-27 2 views
0

Не удается загрузить модель в моем NewController. В других контроллерах я вполне могу назвать эту строку:Yii не загружает модель

$vid = Video::model()->findByPk($id); 

и он получит мне подходящую модель.

Однако в этом контроллере: NewController.php он не работает.

public function actionUpdate($id) 
{ 
    $model=$this->loadModel($id); 

    $vid = Video::model()->findByPk($id); 

    if(isset($vid)) // Check if it works. 
     $this->render('update',array('model'=>$model, 'vid'=>$vid)); 
} 

Есть ли у кого-нибудь предложения, почему это не сработает?

$id действителен и поэтому является $model, я схожу с ума, так как это не работает, когда это необходимо.


Пример, который работает UserController.php:

public function actionView() 
{ 
    if(isset($_GET['user'])) 
     $username = $_GET['user'];   
    else 
     $username = Yii::app()->user->name; 

    $user = User::model()->find("username=:username",array(':username'=>$username)); 
    $saveQ = SavedQuery::model()->findAll("FK_userid=:id", array(':id'=>$user->id)); 

    $vid = Video::model()->findByPk($user->id); 
    $this->render('View', array('user'=>$user, 'vid'=>$vid, 'saveQ'=>$saveQ)); 
} 
+0

вы уверены, что $ ID правильно настроить? –

+0

Да, потому что он работает для другой модели. Кроме того, если я передаю жестко заданное значение '1', он все равно не будет работать. –

+1

Ваш код выглядит немного странно. Почему у вас одинаковый идентификатор для 2 моделей? И ваша основная модель, и модель видео имеют одинаковый идентификатор? –

ответ

0

вы говорите «Идентификатор является внешним ключом для видео. Целостность базы данных тоже правильная ». но $ VID берется с помощью первичного ключа

$vid = Video::model()->findByPk($id); 

Таким образом, вы должны, вероятно,

$vid = Video::model()->findAll("FK_XXXX=:id", array(':id'=>$id)); 
+0

Что будет «FK_XXX»? ForeignKey_TableName? –

+0

просто имя поля, которое делает связь между видео и вашей моделью. –

+0

Также вы уверены, что у вас есть только 1 видео на оригинальную модель? почему у вас не может быть больше? –

-1

Вы должны прокомментировать это:

$model=$this->loadModel($id); 

и попробовать его.

0

Вам не нужно сделать это: $vid = Video::model()->findByPk($id);

actionUpdate загрузить данные для обновления, параметр $ ID искать запись для обновления

Смежные вопросы