【问题标题】:Yii Php : Using CdbCriteria for finding records with primary keysYii Php : 使用 CdbCriteria 查找具有主键的记录
【发布时间】:2014-03-08 18:41:49
【问题描述】:

我正在使用 Yii php,但在查找包含主键数组的记录时遇到问题。

我知道:

$idArray = array(1,2,3);
$model = SomeModel::model()->findAllByPk($idArray);

以上代码有效。但是我想知道如何在 CdbCriteria 中做到这一点,因为我还有其他条件要添加,这是我在典型的 find() 方法中无法做到的。

如何在 CdbCriteria 中使用主键搜索记录?

-------------已编辑---------------

我需要使用我检索到的模型创建一个 CActiveDataProvider。

return new CActiveDataProvider($model,array(
            'criteria'=>$criteria,

        ));

遗憾的是上面不起作用。下面的作品。

return new CActiveDataProvider('SomeModel',array(
            'criteria'=>$criteria,

        ));

【问题讨论】:

  • 您想要所有具有上述 ID 的记录吗?
  • 是的。我基本上有一个 id 数组(主键),但我需要以 CdbCriteria 的方式来做,因为我还有一些条件。我只想检索给定 pks 的记录
  • 好的,这个 ID 数组是固定的吗?是指固定大小还是可变?
  • 固定大小..我已经知道他们手头
  • 请看答案。

标签: php sql yii primary-key criteria


【解决方案1】:

给定一个数组
$idArray = 数组(1,2,3); 你可以这样写。

$dataProvider=new CActiveDataProvider('Mymodel',array(
             'criteria'=>array(
        'condition'=>'id IN ('$idArray[0].',' .$idArray[1].','.$idArray[2].')',
        'order'=>'id DESC',
    ),

【讨论】:

    【解决方案2】:

    试试这个

    $idArray = array(1,2,3);
    
    $criteria = new CDbCriteria;
    $criteria->condition = "CONDITION_HERE";
    
    $model = SomeModel::model()->findAllByPk($idArray , $criteria);
    

    【讨论】:

    • 请参阅编辑后的帖子。我需要标准,因为我需要用它创建一个 CActiveDataProvider
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多