0

私は自分のphpプロジェクトにcodeigniterを使用していますが、あまり経験がありません。だから、私を助けてください。

私は2つのデータベースを持っています。1.Kalix22.アスタリスク

両方のデータベースで、私はいくつかのテーブルを持っています。2つの異なるデータベースのテーブルを結合したいと思います。私は以下のクエリを持っています、それはバックエンドでうまく機能していますが、Activerecordを使用してそれを実装する方法がわかりません。

SELECT  a.CompanyName, sum(ceil((b.billsec)/(c.Call_Limit*60))) as totalcall,
           hour(b.calldate) as use_hour FROM  Kalix2.ph_Companies a 
           INNER JOIN Asterisk.cdr b ON b.clid LIKE CONCAT('%', a.CompanyName, '%') 
           INNER JOIN Kalix2.ph_Plans c ON c.Comp_ID= a.Comp_ID 
           where  date(b.calldate)>='2013-01-15' and date(b.calldate)<='2013-1-20'  
           and c.Plan_Type='Per_Call' and a.CompanyName='ABCD' 
           group by hour(b.calldate);

このクエリをアクティブレコード形式に変換するのを手伝ってください。

4

1 に答える 1

0

必要に応じてこれをアクティブレコードに変換できるはずですが、これをクエリバインディングに変換するだけでパフォーマンスが向上します。よくある間違いは、複数のクラスからクエリを実行しようとすることです。

$this->db1
$this->db2

$ this-> db1-> get()を実行すると、db1のデータのみが認識され、db2は認識されないため、これは機能しません。結合にdatabase.table情報を詳細に保持し、dbオブジェクトを1つだけ使用し、プロファイラーを使用してクエリ生成をデバッグすれば、問題はありません。

複数のデータベースへの接続

アクティブレコードクラスと参加

プロファイラーを使用してクエリをデバッグします

于 2013-01-22T22:26:03.483 に答える