在yii2中输出的值不等于某些值

时间:2016-07-19 11:29:22

标签: yii yii2 yii-extensions

我想输出不等于某些值的变量,但它返回错误

Failed to prepare SQL: SELECT * FROM `tblsuunit` WHERE `unitid` != :qp0

第一个模型有两个模型,我们得到了ids数组

public function actionSunits($id){
    $unitslocation = new Unitslocation();
    $id2 = Unitslocation::find()->where(['officelocationid'=>$id])->all();
      foreach( $id2 as $ids){
      print_r($ids['unitid']."<br>");
      }
    }

这将输出ID为

8
9
11
12
13
14
16

然后我想取id并比较另一个模型(单位模型)并得到与上面不相似的id值然后输出

所以我添加了

 $idall = Units::find()->where(['!=', 'unitid', $ids])->all();

因此整个控制器动作变为

public function actionSunits($id){
    $unitslocation = new Unitslocation();
    $id2 = Unitslocation::find()->where(['officelocationid'=>$id])->all(); 


   foreach( $id2 as $ids){
         $idall = Units::find()->where(['!=', 'unitid', $ids])->all();

     }
     var_dump($idall);

}

这是单位模型表:

enter image description here

如果它正在工作,它应该返回7和10

可能有什么不对......

2 个答案:

答案 0 :(得分:1)

您应该修改代码并使用public void deleteFromFavouriteDatabase(int rowID) { SQLiteDatabase db = this.getWritableDatabase(); db.delete(FAVOURITE.TABLE_NAME, FAVOURITE.KEY_ID + " = " + rowID, null); db.close(); } 条件,例如:

not in

详细了解ActiveQuery::where()ArrayHelper::getColumn()

答案 1 :(得分:0)

尝试:

$idall = Units::find()->where(['not in','unitid',$ids])->all();

信息https://github.com/yiisoft/yii2/blob/master/docs/guide/db-query-builder.md

  

操作数1应该是列或DB表达式。操作数2可以是   数组或查询对象。