Php 我如何使用;添加条件“;当我有三张桌子的时候
我有三张表:产品、商店和提醒。 表警报具有product_id,表产品具有store_id。我建立了一个模型关系,以便可以获得一个包含3的数据的数组 问题是,我需要添加一个条件,在该条件下,它只会返回客户端id(在表存储中)等于试图访问数据的客户端id的警报Php 我如何使用;添加条件“;当我有三张桌子的时候,php,yii,yii1.x,Php,Yii,Yii1.x,我有三张表:产品、商店和提醒。 表警报具有product_id,表产品具有store_id。我建立了一个模型关系,以便可以获得一个包含3的数据的数组 问题是,我需要添加一个条件,在该条件下,它只会返回客户端id(在表存储中)等于试图访问数据的客户端id的警报 $clientidx = $clientlist->idx; $criteria = new CDbCriteria(); $criteria->with = 'product'; $criteria->with = 'p
$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\u idx
?在条件中,您不应该使用关系别名(product.store
),而应该使用表别名。如果要为存储
表中的客户端_idx
列添加条件,则需要:
$criteria->addCondition('store.client_idx = :client_idx');
还包括:
$criteria->with='product'
无效,因为您将立即覆盖此属性。如果要设置多个关系,则需要将数组传递给$with
['together'=>true]
还将确保为查询创建正确的联接,因此您的条件将正常工作:
$criteria->with = [
'product',
'product.store' => ['together' => true],
];
这确实起了作用,并启发了我如何更好地使用它。非常感谢。
$criteria->with = [
'product',
'product.store' => ['together' => true],
];