0

これにはたくさんのトピックがあることは知っていますが、検索して試してみましたが、まだ機能していません。

私はテーブルを持っています:チームとワーカー。任意のワーカーをチームに割り当てることができます。そのため、Workers Manager で、Team 名でも Workers を検索したいと考えています。

コラムなどは取得したのですが、チーム名の一部を入力すると検索が始まるのですが、書いた文字が消えてフィールドを気にせず検索されてしまいます。Firebug で AJAX 呼び出しを確認したところ、teamName というフィールドがあります (Worker モデル クラスに public フィールドを追加しました)。しかし、検索メソッドで条件を print_r すると、条件はありません。そんなことがあるものか?関連フィールドによる検索を実行するにはどうすればよいですか?

編集(私のserach()メソッド):

public function dsearch()
{
    // Warning: Please modify the following code to remove attributes that
    // should not be searched.

    $criteria=new CDbCriteria;

    $criteria->compare('idWorker',$this->idWorker);
    $criteria->compare('idLeaderType',$this->idLeaderType);
    $criteria->compare('t.idTeam',$this->idTeam);
    $criteria->compare('idVoip',$this->idVoip);
    $criteria->compare('workLogin',$this->workLogin,true);
    $criteria->compare('workPass',$this->workPass,true);
    $criteria->compare('name',$this->name,true);
    $criteria->compare('surname',$this->surname,true);
    $criteria->compare('madeCalls',$this->madeCalls);
    $criteria->compare('deleted',$this->deleted);
    $criteria->compare('liveChanges',$this->liveChanges);
    $criteria->compare('confirmer',$this->confirmer);
    $criteria->compare('oldWorkerNum',$this->oldWorkerNum);
    $criteria->compare('idDepart',$this->idDepart);
    $criteria->compare('Team.name', $this->teamName, true);
    $criteria->with=array('Team');
    $criteria->together = true;

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
    ));
}
4

2 に答える 2

0

私はそれを行うのに役立つ拡張機能を見つけました: http ://www.yiiframework.com/extension/relatedsearchbehavior/

どういうわけか動作させることができませんでした。新しいバージョンをダウンロードしましたが、問題ありません。それはかなりうまくいきます。お時間をいただきありがとうございます。

于 2013-03-07T13:47:39.240 に答える
0

mergeWith を使用します。うまくいくことを願っています。

 if($merge!==null){
            $criteria->mergeWith($merge);
            }

参照: http://www.yiiframework.com/doc/api/1.1/CDbCriteria#mergeWith-detail

于 2013-03-07T08:49:55.900 に答える