sql >> Database teknologi >  >> RDS >> Mysql

Yii2 - venstre join på flere betingelse

Jeg tror, ​​at denne er en bedre løsning. I stedet for at bruge Raw-forespørgsler som leftJoin du bør supplere din joinWith relationer med andOnCondition (hvilket tilføjer nødvendige, hvor betingelser i din sammenslutningserklæring).

$products = Product::find()
    ->joinWith(['metaData' => function (ActiveQuery $query) {
        return $query
            ->andWhere(['=', 'meta_data.published_state', 1]);
    }])
    ->joinWith(['availability' => function (ActiveQuery $query) {
        return $query
            ->andOnCondition(['>=', 'availability.start', strtotime('+7 days')])
            ->andWhere(['IS', 'availability.ID', NULL]);
    }])
    ->all();

Derudover ser det renere ud, når du skriver where klausuler i relationer. Det fungerer på samme måde som at skrive det udenfor (hvis jeg ikke tager fejl), men når du omfaktorerer din forespørgsel, kan du nemt slette hele relationen uden at glemme relationsbetingelser udenfor.



  1. Hvordan ekskluderer jeg weekenddage i en SQL Server-forespørgsel?

  2. Sådan oprettes forbindelse til database ved hjælp af NaviCat MySQL-klient

  3. ELLER Operatørkortslutning i SQL Server

  4. PostgreSQL VALUES Kommando forklaret