2011-11-09 9 views
2

私がアクションを持っている:NULLの代わりのYii DAO SQL INSERT上の値:bindValue

は、アイテムのコントローラーでアクションを更新しました。 ajaxLinkから呼び出されるアクションは、アイテム/ビュー/#

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(); 
     } 

に私はまた、変数をダンプしようとした放火魔を通じて、このための応答は... 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を返します。私はここで何が欠けていますか?

+0

$モデルはどのようにアクセスされますか?関数を渡した? –

+0

完了アクションで編集されたPhill Pafford – enfield

答えて

2

助けてくれてありがとう。ここでは完全であることを

は解決策..です

私はこれがアクションを呼び出すajaxLinkある

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

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

を追加する必要があります。

0

$ model = new item; その新しいオブジェクトとそれはまだデータベースIDを持っていません。あなたはまず、この$モデル

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

に値を追加し、それに

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

を保存するか、私はあなたの使命の何かが欠けていなければなりませんか?

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

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

... 

をし、$モデル - >アイテムID

を使用するよりも、しかし、あなたがフォームを送信すると、このアクションを要求すべきであるより:

+0

コメントを見る私はVarioNの応答に追加しました – enfield

0

は、あなたがこれを使用することができますページのフォームからアイテムIDをキャプチャしたい場合ボタン。 別のケースでは、フォームデータ($ _POST ['Item'])が存在しないためです。

+0

VarioNこれは他の[あなたが私を助けた質問]を完成させるための単なる拡張です(http://stackoverflow.com/questions/8023820/yii-ボタンを作成するdbエントリ)。 ItemIdを取得するためにここには何も含まれていません。私が見ているページと同じItemIdである必要があります。このアクションはアイテムコントローラの一部です。私は '$ itm = new Item();のようなものを試しました。これはまだ値がNULLになります。 – enfield

+0

もしあなたが 'あなたの居場所を知っているならば、 itemIdはItemクラスでハードコードされています(public $ ItemId = 1;のように)、GETメソッドまたはPOSTメソッドによる要求から取得する必要があります。 GETを選択すると、GETパラメータ付きのajaxリンクを生成できます。のように。 ItemIdをどこから取得したいのですか?コードから静的に、またはユーザーの要求から動的に –

関連する問題