タグ

modelに関するzuborawkaのブックマーク (3)

  • CakePHP3のORMを使う際に欠かせない概念について - Qiita

    諸事情あって、バタバタしているyandoです。 18時過ぎに自分の番である事に気がついてしまいましたが、この記事はCakePHP アドベントカレンダーの9日目です。 CakePHP3で一新されたORMは「結果が配列からオブジェクトになった」というだけではない違いがあります。 それが Eager loading と Lazy loading です。この概念を理解していないとORMの機能を間違って使ってしまうかもしれません。 何が起きるの? N+1問題 ORMからクエリを実行した時にJOINを使ったクエリを実行するか、シンプルなクエリを実行するかのルールが分かりますか? 従来のCakePHPではJOINの条件などに応じて自動的に決定されており、関連データを取得するためのクエリが大量に実行される場合がありました。たとえば画面に表示している20件のデータを取得するクエリを実行し、その後に20件のデ

    CakePHP3のORMを使う際に欠かせない概念について - Qiita
  • バーチャルフィールド - 2.x

    バーチャルフィールド¶ バーチャルフィールドは任意の SQL 表現を作り、それをモデルのフィールドとして割り当てることを 可能にします。これらのフィールドは保存することはできませんが、 読み込み操作時にモデルの他のフィールドと同じように扱われることになります。 また、モデルの他のフィールドと同じように、モデルのキーを元に配置されます。 バーチャルフィールドの作成¶ バーチャルフィールドを作るのは簡単です。各々のモデルに、フィールド => 式 という内容の配列を用いた $virtualFields プロパティを定義することができます。MySQL を用いたバーチャルフィールドの 定義の例としては、以下のようになります。

    zuborawka
    zuborawka 2013/01/05
    ここは全然知らないことだらけだな。。。理解しよう。
  • CakePHP 2系でfindとかでフィールド名に別名をつけるとき

    CakePHPのpaginateで別名をつけた時に取得結果が使いにくかったのでメモ 通常 $this->paginate = array( 'ErrorLog' => array( 'conditions' => array( 'ErrorLog.delete_flag' => false ), 'fields' => array( 'ErrorLog.email', 'count(ErrorLog.error_log_id) AS error_count', ), 'group' => 'ErrorLog.email', 'limit' => 20 ) ); のように別名をつけると Array ( [0] => Array ( [ErrorLog] => Array ( [email] => hugahuga@example.ne.jp ) [0] => Array ( [error_c

    CakePHP 2系でfindとかでフィールド名に別名をつけるとき
    zuborawka
    zuborawka 2013/01/04
    知らなかった。モデル名をダブルアンダースコアで連結。
  • 1