読者です 読者をやめる 読者になる 読者になる

findするときのconditionsなどにモデル名を書く習慣を付ける

CakePHPのCookbookを読んでると、いろんなところで「SQL内にモデル名を含めましょう」みたいなことが書いてあります。

conditions: 関連モデルのレコードを限定するための SQLSQL 内でモデル名を使用することを習慣にしておくようにしておきましょう:“approved = 1.” よりも、“Profile.approved = 1” の方が良い記述です。

「へぇそういうものなのか。まぁどっちでもいけるから気にしなくていいか。」
みたいな感じで思ってたんですが、ふとfindの拡張をしようとした時に、
「conditions部分にモデル名が含まれてるかどうか」
を判断したくなったのでどんな風になってるのか確認してみました。




確認したファイルはcake/libs/model/model.php
場合によって色々やってることは違ったけど、ドットをstrposで探してfalseだったらモデルのaliasを追加しているみたい。

            if (strpos($field, '.') === false) {
                unset($fields[$field]);
                $fields[$this->alias . '.' . $field] = $value;
            }