みなさんこんにちは!
最近はRailsとSwiftで四苦八苦してるたがみです!
久しぶりにCakePHPを触る機会があり、忘れちゃいけないのでブログに残しとこう!と思った次第です。
今回の例は、
あるプロジェクトでcomposerを使ってプラグイン等を管理しているが、過去のプラグインでPackagistに登録されていない。どうやれば解決出来るんだっけ?
です!
それではいってみましょう!
CakePHPの情報です。
みなさんこんにちは!
最近はRailsとSwiftで四苦八苦してるたがみです!
久しぶりにCakePHPを触る機会があり、忘れちゃいけないのでブログに残しとこう!と思った次第です。
今回の例は、
あるプロジェクトでcomposerを使ってプラグイン等を管理しているが、過去のプラグインでPackagistに登録されていない。どうやれば解決出来るんだっけ?
です!
それではいってみましょう!
タイトルとおりのことです。
うまくjoin出来てるはずなのにな〜〜なんでだろうなぁ、sql_dumpでちゃんと思い通りのSQL発行されてるのにな〜なんだろうなぁ・・・と思い、色々optionを指定していたらタイトルとおりのことが出来ていなかったせいで結果が反映されていませんでした。
下記のようなコードを書いた場合はちゃんとfieldsも指定しましょう
$this->User->find('all', [ 'joins' => [ 'comment' => [ 'table' => 'comment', 'alias' => 'Comment', 'type' => 'inner', 'conditions' => [ 'User.id = Comment.user_id' ] ] ], 'fields' => '*' ]);
これで解決。めでたしめでたし!
参考:http://stackoverflow.com/questions/4354846/cakephp-display-custom-fields-from-array/4355357#4355357
cakePHP2.0のfindでINNER JOINしてもJOINしたテーブルが表示されない
みなさんこんにちは!
昨日更新した記事が、僕自身の勉強にもなってるなぁと感じたので調子にのって楽しそうなコアライブラリを探しました!
今日書くのはInflectorクラスです。
CakePHP2を使い始めて約2年が経ちましたが最近やっとコアライブラリまで目がいくようになりました(遅い)
CakePHPにはコアライブラリとしてたくさんの便利な関数がつまっています。
これらを知っているだけでも開発が相当便利になるなぁと最近感じているのでその中から今回は「String」ライブラリの中から便利だなぁと思う関数を紹介したいと思います。
こんにちは!
今日はCakePHP2のプラグインである「Upload」プラグインで画像をあげなおす処理を書いてみます。
結果的に無理矢理感が出てしまってますが、とりあえず実装は出来るってことでw
綺麗に書きたい〜〜
こんにちは!
CakePHPでアプリ作ってるときにあるURLをwww付きに固定したいなぁって思うとき、ありますよね!
そんなときに簡単に出来る方法があるのでご紹介します。
Q. CakePHP2でリレーション先までデータを保存したい
A. saveAllメソッドにdeepオプションを渡してあげましょう。
例
・ArticleがItemを複数持ち、ItemはMetaItemを複数持っている(Naverまとめ的な)Article.php
array( 'className' => 'Item', 'foreignKey' => 'article_id', 'dependent' => true ) ); }Item.php
array( 'className' => 'MetaItem', 'foreignKey' => 'item_id', 'dependent' => true ) ); }MetaItem.php
array( 'className' => 'Item', 'foreignKey' => 'item_id' ) ); }保存するデータの構造
array( 'Article' => array( ... ), 'Item' => array( (int)0 => array( ... ), (int)1 => array( ... 'MetaItem' => array( (int)0 => array( ... ), (int)1 => array( ... ) ) ) ) )使うメソッド
$this->Article->saveAll($data, array('deep' => true));・コメント
なぜかリレーションが1段階先しか保存してくれない!!って困ったのでぐぐってみるとdeepオプションというのがあるじゃないですか!
ということで早速使ってみると見事解決。よかったよかった〜〜
適切なデータ構造を作って渡してあげれば適当に処理してくれるCakePHPありがとうございます!!
こんにちは!
ModelのhasManyを使って、データをfindしてきたとき、FormHelperでViewにどう表示させるもんか悩んだのでメモ変わりに書いておきます。
多分なんのこっちゃ言ってるかわからないと思うのですが、以下のようなデータがあった場合にFormHelperのデフォルト値に反映させて、まぁいわば編集のような機能をつけたいときに悩んだのです(ようわからん)
array( 'Article' => array( 'id' => '1', .... ), 'Item' => array( (int)0 => array( 'id' => 1, 'order' => 1, .... ), (int)1 => array( .... ) ) )
こんなデータがあったとします。このデータをControllerからViewに渡していると仮定しときます($this->dataにぶちこむ)
これをFormHelperでぱぱっと表示出来る方法はないかと色々探していたら以下のようなものを見つけました。
How to edit form with hasMany (multiple rows)
ようは以下のような感じです。
data['Item'] as $item){ echo $this->Form->hidden('Item.' . $count . '.id'); echo $this->Form->hidden('Item.' . $count . '.order'); // 必要に応じて増やす $count++; } // Output // // // ... //
このようにコードを書けばあるArticleに紐づくhasManyなものをまとめて編集したい!のような要望にも答えられるかと思います。
ただ$countがちょっとださいなぁと。
あともう1階層深いリレーションを表示させようとするとイテレートをもう1段階増やさなければならないのでカウンターも増えてしまうのが嫌だなぁと。
もっとうまい方法があるはずなんですが、もし誰かこうやったほうがよくない?みたいなのがあれば教えてください!!
みなさんこんにちは!
リレーションを組んでリレーション先も同時に消す方法を勘違いしていたので自分の戒めのためにメモとして残しておきます。
CakePHP2の画像アップロードプラグイン「UploadPack」を試してみた
こんにちは!
CakePHP2の画像プラグインを色々試しているので今回は「UploadPack」というのを試してみました。
いってみましょう!!
“CakePHP2の画像アップロードプラグイン「UploadPack」を試してみた” の続きを読む