我有三张table产品、商店和警报。表警报具有product_id,表产品具有store_id。我创建了一个模型关系,以便可以获得包含这3个数据的数组。
问题是,我需要添加一个条件,使它只返回client_id(在表Stores上)等于试图访问数据的客户机的id的警报。
$clientidx = $clientlist->idx;
$criteria = new CDbCriteria();
$criteria->with = 'product';
$criteria->with = 'product.store';
$criteria->addCondition('product.store.client_idx = :client_idx');
$criteria->params[':client_idx'] = $clientidx;
$openalerts = Openalert::model()->findAll($criteria);
为什么我无法使条件显示product.store.client_idx
?
1条答案
按热度按时间jv2fixgn1#
在条件中不应使用关系别名(
product.store
),而应使用表别名。如果要为store
表中的client_idx
列添加条件,则需要:还有这个:
$criteria->with = 'product'
不起作用,因为您会立即覆盖此属性。如果要设置多个关系,则需要将数组传递给$with
。['together' => true]
还将确保为查询创建正确的JOIN,以便您的条件可以正常工作: