cakephp2.2 でModel::query()のTips

2013/01/24

ユニットテストを実施中に気づいたModel::query()のtips。

Model::query()でbindしたい

以下の方法で疑似bindしてくれます。

Model->query(
    'select * from posts where id=? and user=?'
    , array('hoge','oreore')
);

Model::query()でキャッシュしてほしくない

query()はデフォルト、結果がキャッシュされますので、キャッシュされたくない場合こうします。

Model->query(
    'select * from posts'
    ,false
);

、、、あれ、というとこは、バインドとキャッシュoffを同時にするには、どうしたらいいんだ。。。。

bind & cache off

これでできました

Model->query(
    'select * from posts where id=? and user=?'
    , array('hoge','oreore')
    ,false
);

なんと!cacheのパラメータを第3引数に移動で対応できました!汎用的!

参考

fetchAll

@cakephper さんの記事CakePHP2 独自SQL文でPrepared Statementを使う を参考に、fetchAllで、同じような事を試してみたんですが、ダメでした。

cacheQueries

そうそう、cacheQueries = false も両方、試したんですけどねー、これもだめでした。

追記

@cakephperさんに言われて、fetchAllを再度、以下のように第3引数設定して、試してみました。

Model->getDatasource()->fetchAll(
    'select * from posts where id=? and user=?'
    , array('cakephper','sasugadesu')
    , array('cache' => false)
);

ってしたら、いけました!てか、@cakephperさんもブログ追記してた!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です