3

我试图设定一个条件,即客户端 ID 必须与客户端 ID 匹配,并且位置表中的区域字段必须与附加到与用户位置关联的位置 ID 的区域匹配。

所以我有3张桌子。当前表(t1),表relation1引用(t2),以及t2在relation2中引用的表(我们称之为t3)。

    $this->getDbCriteria()->mergeWith(数组(
        'with' => $rel,
        '条件'=>'relation1.client_id=:client_id AND
                      关系1.关系2.区域=:区域',
        'params'=>array(':client_id'=>$client_id, ':region'=>$region),
    ));

返回$这个;

Relation1 是表中的关系,一旦从该关系中删除。关系 1 引用的表有一个名为关系 2 的关系,它可以让我到达需要检索区域值的位置。

如果我删除第二个条件和参数,它就可以工作,所以我知道关系 1 正在工作,而关系 2 也可以在其他情况下工作。如果想见他们,他们就在这里。

    公共职能关系()
    {
        返回数组(
            'relation1' => 数组(self::BELONGS_TO, 't2', 't2_id'),
        );
    }

    公共职能关系()
    {
        返回数组(
            'relation2' => 数组(self::BELONGS_TO, 't3', 't3_id'),
             );
    }

我真的觉得这应该工作。有什么帮助吗?

4

1 回答 1

3

我从另一个网站得到了答案。如果您有兴趣,解决方案是:

    $this->getDbCriteria()->mergeWith(数组(
            '与' => 数组(
                'relation1' => 数组(
                       '条件' => 'relation1.column = :column_id',
                       'params' => array(':column_id'=>$column_id)),
                'relation1.relation2' => 数组(
                       '条件' => 'relation2.column2 = :column2',
                       '参数' => 数组(':column2'=>$column2))
            ),
        ));
    返回$这个;

谢谢你的帮助!

于 2012-04-12T14:58:01.950 回答