SourceForge.jp

ちいたんフォーラム

雑談 >> 複数テーブルにまたがるSQLに関して

堺ちゃん 2008-12-21 23:34:48
はじめまして。
つい先週この「ちいたん」を発見して、どうしていままでこんないいものに気がつかなかったのだろうと悔しく思っています。

ですが、まだまだ整備不足のようで、したいことができない時は、なるべく本体をいじらないようにオーバーライドしています。

しかし、とうとうそれも難しいところが出てきてしまったので報告しておきます。

複数テーブルにまたがるSQLを実行するのはfindqueryで可能\なのですが、同じ内容のSQLの件数を取得する方法がありませんでした。

// 複数テーブルにまたがるsqlも可能\
$c->m[ $this->model ]->findquery( $this->sql, $condition, $order, $limit );

// そのテーブルの条件しか入れられない
$c->m[ $this->model ]->getcount( $condition );

それで、database.php の91行目を以下のように変更し、

//function GetFindQuery( $query, $condition = \"\", $order = \"\", $limit = \"\", $group = \"\" )
function GetFindQuery( $query, $condition = \"\", $order = \"\", $limit = \"\", $group = \"\", $name = \"\" )
{
$driver =& $this->GetDriver( $name );
return $driver->GetFindQuery( $query, $condition, $order, $limit, $group );
}

getcount を以下のようにオーバーライドして対応しました。

function getcount( $condition = \"\" )
{

$query = $this->db->GetFindQuery( $this->sql, $condition, \"\", \"\", $this->name );

return $this->db->count( $query, $this->name );
}


返信  パスワード