web-dev-qa-db-ja.com

Yii2クエリ内で等しくないを使用する方法

等しくない条件をチェックするyii2クエリを使用したい。私はこれを試してみましたが、期待した結果が得られませんでした。どうすればいいのですか?

$details        =   MovieShows::find()->where(['movie_id'=>$id])
                    ->andWhere(['location_id'=>$loc_id])
                    ->andWhere(['cancel_date'=>!$date])->all();
42
Bloodhound

この場合、operator format[operator, operand1, operand2, ...]を使用する必要があります。したがって、コードは次のようになります。

$details = MovieShows::find()
           ->where(['movie_id'=>$id])
           ->andWhere(['location_id'=>$loc_id])
           ->andWhere(['<>','cancel_date', $date])
           ->all();

その他 whereメソッドと演算子形式の使用について

94
Tony

これを試すこともできます:

$details = MovieShows::find()->where(['movie_id'=>$id])
           ->andWhere(['!=', 'cancel_date', $date])->all();

より大きい

$details = MovieShows::find()->where(['movie_id'=>$id])
               ->andWhere(['>', 'cancel_date', $date])->all();

未満のために

$details = MovieShows::find()->where(['movie_id'=>$id])
               ->andWhere(['<', 'cancel_date', $date])->all();

その他 ここをチェック

17

たぶんこれは助けになります... :)

$query->andFilterWhere([ 'or',
                           ['<=', 'affidavit_cont', 0],
                           ['=', 'affidavit_cont1', 0],
                           ['>', 'affidavit_cont2', 0],
                           ['!=', 'affidavit_cont3', $this->affidavit3],
                           ['in', 'attempt_count', $this->attempted],

                      ]);

$query->andFilterWhere(['like', 'job_invoice.paid_status', '',]);

$query->andFilterWhere(['in', 'status_id', $this->status_id]);

$query->andFilterWhere(['between', 'last_attempt',
    strtotime(Utility::convertDate2Db($this->from_date)),
    strtotime(Utility::convertDate2Db($this->to_date))
    ]);
8
Kalpesh Desai

条件を適用するためのより安全な方法。

Booking::find()->where('tour_id = :tour_id and id != :id', ['tour_id'=> $chk->tour_id, 'id' => $id])->all();
5
SO-user

これを使用できます

$this->find()->where(['resource_id' => $resource_id]) ->andWhere(['>=', 'start_time', $start_time])->all();
2
Faizan Khattak
        <?= $form->field($model, 'first_name')->dropDownList(
        arrayhelper::map(user::find()
                                ->where([ 'not in ' ,'first_name', patient::find() ->select([ 'patient_name' ]) ->asArray()  ])
        ->all(),'id','first_name')

多分それはsubqueryを使用する必要がある人に役立つでしょう。

1
Naeem Marzu

@tonyの回答に加えて、subqueryをカプセル化する必要がある人のために、簡単な例を示します。

$users = User::find()                  
            ->where([
                'not in',
                'id',
                (new Query())
                    ->select('user_id')
                    ->from(MyTable::tableName())
                    ->where(['related_id'=>$myRelatedId])
            ->all();
1
letsjump

以下の貼り付けたコードを使用できます。

$details        =   MovieShows::find()->where(['movie_id'=>$id])
                    ->andWhere(['location_id'=>$loc_id])
                    ->andWhere(['not in','cancel_date',$date])->all();
0
Mohan Prasad

これを読んでいる人がREGEXPなどを使用する必要がある場合、これはYii2(2.0.15.1)で機能します。

->andWhere(['NOT REGEXP', 'column','[A-Za-z]'])

0
Xavi Esteve