代码之家  ›  专栏  ›  技术社区  ›  beginner

Yii2活动记录筛选器等数值(以列为单位)

  •  0
  • beginner  · 技术社区  · 8 年前

    下面的图片是我的示例数据库,我想查询不具有相同的记录 date_received date_released 和 time_received time_released .

    enter image description here

    下面的MySQL查询正是我想要的:

    SELECT * FROM `dts_track` where  date_received != date_released and time_received != time_released
    

    $unit_received = \common\models\dts\DtsTrack::find()->where(['!=', 'dts_track.date_received', 'dts_track.date_released'])->andWhere(['!=', 'dts_track.time_received', 'dts_track.time_released']);
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   rob006    8 年前

    使用数组语法时 != 条件,数组的第三个元素被视为值,因此它将作为值转义。所以你实际上是在创造条件,比如 date_received != 'date_released' yii\db\Expression()

    $unit_received = \common\models\dts\DtsTrack::find()
        ->where(['!=', 'dts_track.date_received', new Expression('dts_track.date_released')])
        ->andWhere(['!=', 'dts_track.time_received', new Expression('dts_track.time_released')]);
    

    或者完全避免数组语法:

    $unit_received = \common\models\dts\DtsTrack::find()
        ->where('date_received != date_released')
        ->andWhere('time_received != time_released');