CakePHPのfindメソッドのconditionsについての質問です。
viewファイルにcalculation.ctpを作っておき、formからデータを送信するようにしておきます。
(現在は練習、テスト段階なのでそこは詳しく触れません)
コントローラーで目標とする動きは、データを何らかの値で受け取ったら、ランダム変数$randamに1、もしくは2が入ります。そして、配列$arrayから$randamの数だけランダムにキーを取ってきます。
もし、$randamが1なら$randkeyは変数、2なら配列なのでなのでif文で分けます。
それぞれ、findメソッドのconditionsを作る作業をしています。
ここで$randamが1なら問題ないのですが、2の場合が上手くいきません。
area_idがランダムに選んだ二つのうちのどちらかを含んでいるものを取り出したいのですが、Warning (2): Illegal offset type と出てしまい動作してくれないのです。
連想配列のキーに「配列」を指定したら発生するというものらしいのですが、$array[$randkey[0]]はintegerなので関係ないはずです。実際に変数でなく直接1など数値を入力してみましたが、同じエラーが出ました。
その後、OR,ANDの書き方も調べて試して下のように書いてみたのですが、同様の結果となってしまいます。
Queryが WHERE MySampleData
.area_id
IS NULLとなってしまっているようです。
(これが1と2、とか、2と4になってほしいのですが)
複雑なconditionsの書き方はどうすればいいのでしょうか?
cookbookも見て色々試したのですが、解決しません。よろしくお願いします。
PHP
1<?PHP 2 function calculation(){ 3 if (isset($this->data['id'])){ 4 $randam = rand(1, 2); 5 $array = [1, 2, 3, 4]; 6 $randkey = array_rand($array, $randam); 7 if($randam = 1){ 8 $status = array( 9 'conditions' => 10 array('MySampleData.area_id' => $array[$randkey]), 11 ); 12 }else{ 13 $status = array( 14 "conditions" => 15 array('OR' => array( 16 'MySampleData.area_id' => $array[$randkey[0]], 17 'MySampleData.area_id' => $array[$randkey[1]], 18 )) 19 ); 20 }; 21 $data = $this->MySampleData->find('all'/*'first'*/, $status); 22 } else { 23 $data = null; 24 } 25 $this->set('data', $data); 26 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/08 04:23
2016/01/08 09:27