3

クライアント ID がクライアント ID と一致する必要があり、場所テーブルの地域フィールドが、ユーザーの場所に関連付けられている場所 ID に関連付けられた地域と一致する必要があるという条件を作成しようとしています。

だから私は3つのテーブルを持っています。現在のテーブル(t1)、テーブルrelation1が参照するテーブル(t2)、およびt2がrelation2で参照するテーブル(これをt3と呼びます)。

    $this->getDbCriteria()->mergeWith(array(
        'with' => $rel,
        '条件'=>'relation1.client_id=:client_id AND
                      関係1.関係2.地域=:地域',
        'params'=>array(':client_id'=>$client_id, ':region'=>$region),
    ));

$これを返します。

Relation1 は、このテーブルから削除されたテーブル内のリレーションです。relationship1 が参照するテーブルには、relation2 というリレーションがあり、リージョンの値を取得する必要がある場所に移動します。

2 番目の条件とパラメーターを削除すると機能するため、relation1 が機能し、relation2 が他のコンテキストでも機能することがわかります。ご覧になりたい場合は、こちらをご覧ください。

    パブリック関数関係()
    {
        配列を返します(
            'relation1' => array(self::BELONGS_TO, 't2', 't2_id'),
        );
    }

    パブリック関数関係()
    {
        配列を返します(
            'relation2' => array(self::BELONGS_TO, 't3', 't3_id'),
             );
    }

これはうまくいくはずだと本当に感じています。何か助けはありますか?

4

1 に答える 1

3

別のサイトから回答がありました。興味がある場合、解決策は次のとおりです。

    $this->getDbCriteria()->mergeWith(array(
            'with' => 配列(
                'relation1' => 配列(
                       '条件' => 'relation1.column = :column_id',
                       'params' => array(':column_id'=>$column_id)),
                'relation1.relation2' => 配列(
                       '条件' => 'relation2.column2 = :column2',
                       'params' => 配列(':column2'=>$column2))
            )、
        ));
    $これを返します。

ご協力いただきありがとうございます!

于 2012-04-12T14:58:01.950 に答える