CakePHPでjoinしようとしたときのエラー 【Notice (8): Undefined offset: 0 [CORE/Cake/Model/Datasource/DboSource.php, line 1714]】
2015/04/18
Cakeでfind()からjoinしようとしたときに下記Noticeが出て、検索もうまく行かなかった。
Notice (8): Undefined offset: 0 [CORE/Cake/Model/Datasource/DboSource.php, line 1714]
Notice (8): Undefined offset: 1 [CORE/Cake/Model/Datasource/DboSource.php, line 1714].
.
.
ちなみにその時ソースはこれ
1 2 3 4 5 6 7 8 |
$options['joins']= array( 'type'=> 'LEFT', 'table' => 'hoge', 'alias' => 'hoge', 'conditions' => 'hoge.article_id = hogehoge.article_id' ); $result = $this->find('all', $options ); |
なんぞなんぞと思って、WEB見たけどいまいち分からん。
参考にしていたサイト。
http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html
http://zisakuzien.exblog.jp/12954257
しょうがないので該当部分のソースを見ると..
1 2 3 |
1714 if (is_array($query['joins'][$i])) { 1715$query['joins'][$i] = $this->buildJoinStatement($query['joins'][$i]); } |
むー$query[‘joins’]の中の要素0,1….が無いよってこと。。
あれ、joinsの中ってそういう構造だったけと思ってよく見たら、さらに一つ配列でくくらなければならなかった様子。
↓正しいもの
1 2 3 4 5 6 7 8 9 10 |
$options['joins']= array( //追加 array( 'type'=> 'LEFT', 'table' => 'hoge', 'alias' => 'hoge', 'conditions' => 'hoge.article_id = hogehoge.article_id' ) ); //追加 $result = $this->find('all', $options ); |
上手く行った。参考サイトを見ても、配列を2重にしている。。
なんぞこれー!!
他のconditionsとかfieldsとかより1階層多い。これは、複数指定できるようにかな。
関連記事
-
-
[php]メモ_開始月と終了月を指定して、その間の各月、開始日・終了日を得る
メモ 関数 [crayon-604259b09c6a3132710 …
-
-
MongoDBとPHP_リンクと個人的ポイントまとめ
=============================== リンク集 === …
-
-
【php】strtotimeで日付計算する場合の基準日の指定のくせ「A non well formed numeric value encountered in 」
またちょっと嵌った。。。 strtotime() 書式化された文字列からunix …
-
-
アンケートOSS lime surveyを軽く使ってみてのメモ
varsion 1.92 良い所 作成できるアンケートは多岐にわたり、細かい設定 …
-
-
[php]期間指定で月一覧、日付一覧のデータ取得
123456789101112131415161718192021222324#日付けで取得(yyyy-mm-dd)function get_period_date (){$startDate = date('Y-m-d', strtotime('2018-01-06'));$endDate = date('Y-m-d', strtotime("2018-01-09"));$diff = (strtotime($endDate) - strtotime($startDate)) / ( 60 * 60 * 24);for($i = 0; $i <= $diff; $i++) {$period[] = date('Y-m-d', strtotime($startDate . '+' . $i . 'days'));}return $period;}#月(yyyy-mm)で取得function get_period_month(){$startDate = date('Y-m-d', strtotime('2017-01-06'));$endDate = date('Y-m-d', strtotime("2018-01-09"));$diff = (strtotime($endDate) - strtotime($startDate)) / ( 60 * 60 * 24 * 30);for($i = 0; $i <= $diff; $i++) {$period[] = date('Y-m', strtotime($startDate . '+' . $i . 'month'));}return $period;}