Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我如何使用;添加条件“;当我有三张桌子的时候_Php_Yii_Yii1.x - Fatal编程技术网

Php 我如何使用;添加条件“;当我有三张桌子的时候

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

我有三张表:产品、商店和提醒。 表警报具有product_id,表产品具有store_id。我建立了一个模型关系,以便可以获得一个包含3的数据的数组

问题是,我需要添加一个条件,在该条件下,它只会返回客户端id(在表存储中)等于试图访问数据的客户端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\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],
];