NULL вместо значения в Yii DAO SQL INSERT: bindValue - PullRequest
2 голосов
/ 10 ноября 2011

У меня есть действие:

ОБНОВЛЕНО Действие в контроллере элемента. Действие вызывается из ajaxLink в item / view / #

public function actionAddInterest() {
            $itm= Item::model()->find("`ItemId` = :itm", array(':itm' => $_GET['ItemId']));
            $connection = yii::app()->db;
            $sql1 = "INSERT INTO interest (UserId, ItemId)
                        VALUES(:usr, :itm)";
            $command=$connection->createCommand($sql1);

            $command->bindValue(":usr", Yii::app()->user->id);
            $command->bindValue(":itm", $itm);
            $command->execute();
        } 

Я также попытался сбросить переменную и через firebug ответ на это ... возвращает NULL. Так что что-то не работает с $ _GET.

$itm= Item::model()->find("`ItemId` = :itm", array(':itm' => $_GET['ItemId']));
var_dump($itm);
die();

ORIGINAL

 public function actionAddInterest() {
        $model = new Item;
        $connection = yii::app()->db;
        $sql1 = "INSERT INTO interest (UserId, ItemId)
                    VALUES(:usr, :itm)";
        $command=$connection->createCommand($sql1);

        $command->bindValue(":usr", Yii::app()->user->id);
        $command->bindValue(":itm", $model->ItemId);
        // $command->bindValue(":itm", $model->ItemId, PDO::PARAM_INT);  //also tried
        $command->execute();
    } 

Никакое значение не захватывается из $model->ItemId, и оно возвращает NULL для ввода. Что мне здесь не хватает?

Ответы [ 3 ]

2 голосов
/ 11 ноября 2011

Спасибо за помощь всем.

Для полноты вот решение ..

Я должен добавить

'data' => array('ItemId' => $model->ItemId),

до

<?php 
  echo CHtml::ajaxLink(
    'Add Interest',          
    array('/item/addInterest'), 
    array(
      'data' => array('ItemId' => $model->ItemId),
      'update'=>'#int_res'
      )
  );
?>

Это ajaxLink, который вызывает действие.

0 голосов
/ 10 ноября 2011

Если вы хотите захватить ItemId из формы на странице, вы можете использовать это:

if (!isset($_POST['Item']))
    Yii::app()->end();

$model = new Item;
$model->attributes = $_POST['Item'];

...

, а затем использовать $ model-> ItemId

Но чем вам следует запросить это действиес кнопкой отправки формы.Потому что в другом случае не будет данных формы ($ _POST ['Item']).

0 голосов
/ 10 ноября 2011

у вас есть $ model = new Item;поэтому его новый объект и у него еще нет идентификатора базы данных.Сначала вы должны добавить значения в эту модель $

$model->label = "Abc";
$model->someMore = "val";

и сохранить ее

if ( $model->save() ) { 
    //get ID
    $itemId = app()->db->getLastInsertID();
}

или я что-то упускаю из вашей миссии?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...