タグ : find

【DooPHP】Group By 検索を使用する

doophp

doophp

DooPHPのFindでGroup Byでの検索ができないみたい、、、

ちょっとFramework変更してしまいましたが、
割と簡単に出来るようになったのでメモしておきます。

/dooframework/db/DooSqlMagic.php
の350行目あたりの
$sql =”SELECT {$sqladd['select']} FROM {$model->_table} {$sqladd['where']} {$sqladd['order']} {$sqladd['custom']} {$sqladd['limit']}”;
を下記に変更。customの位置を変更します。
$sql =”SELECT {$sqladd['select']} FROM {$model->_table} {$sqladd['where']} {$sqladd['custom']} {$sqladd['order']} {$sqladd['limit']}”;

こうすることでControllerのcustomを利用することができます。

$this->db()->find( $user,array(‘custom’=>’ group by name ‘,’desc’=>’id’));

なんで、orderとlimitの間にcustomがあるんだろう?
とりあえず応急処置としてはこれでいきます。

【DooPHP】db->findで検索(SELECT)

db->findを使用して、検索するときのメモ。

■パターン1 Whereを個別に記述する方法。
このパターンは条件を指定する際に、見やすく書くことができますが、
条件の追加は全てANDになってしまいます。

Doo::loadModel(‘User’);
$user = new User;
$user->login_id = ‘aaa’;
$result = $this->db()->find( $user ,array(‘order by’=>’id’));

■パターン2 Whereをまとめて記述する方法。
このパターンは条件を直接続けて書く事ができます。
条件が多い場合は、見づらくなってしまいますが、
OR構文や複雑な条件指定の際に使用できます。

Doo::loadModel(‘User’);
$user = new User;
$result = $this->db()->find( $user ,array(‘where’=>’login_id=”aaa”‘,’order by’=>’id’));