0

統計クエリを使用して、Yii で 3 つのテーブルを関連付けようとしています。「通信」= hai および「国」= 中国で、通信と国が 3 つの異なるテーブルの属性であるという条件で、ログインしているユーザーによって投稿された各要求の最低料金を表示する必要があります。どうすればこれを実装できますか? 統計クエリの条件に AND/Or を追加する方法はありますか? 私のコードは次のとおりです..

   return array(                     
                         'serviceproposals' => array(self::HAS_MANY, 'Serviceproposal', 'ServiceRequestID'),
                         'user' => array(self::BELONGS_TO, 'Buyer', 'user_id'),
                         'postCount'=>array(self::STAT, 'serviceproposal', 'ServiceRequestID'),
                         'maxvalue'=>array(self::STAT, 'serviceproposal', 'ServiceRequestID','select'=>'MAX(proposal_amount)'),
                         'minvalue'=>array(self::STAT, 'serviceproposal', 'ServiceRequestID','select'=>'MIN(proposal_amount)', 'condition' => 'Communications ="hai"'),
                    );

データベース:

User[user_id,name,password,Country],
Provider[user_id,providercompany,providerdetails],
Buyer[user_id,contactinfo],
ServiceRequest[ServiceRequestID,Buyer.user_id,details,date],
ServiceProposal[ServiceProposalId,ServiceRequestID,Provider.user_id,services,propsal_rate,Communications]
4

1 に答える 1

0

Yii で STAT クエリを使用すると、通常、STAT が遅いため、クエリのパフォーマンスが影響を受けます。リレーションシップを追加する代わりに、CDBCriteria select オプションで COUNT を使用できます。それを使用するには、そのプロパティをモデルに宣言する必要があります Serviceproposal モデルと同様に、プロパティ public $postCount; を追加する必要があります。したがって、出力からカウントの値を使用できます。

于 2012-12-08T07:49:50.410 に答える