sql >> Database >  >> RDS >> Mysql

Yii2 - linker join op meerdere voorwaarde

Ik denk dat dit een betere oplossing is. In plaats van het gebruik van onbewerkte zoekopdrachten zoals leftJoin je moet je joinWith aanvullen relaties met andOnCondition (wat de noodzakelijke voorwaarden toevoegt aan uw lidmaatschapsverklaring).

$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();

Bovendien ziet het er schoner uit als je where . schrijft clausules binnen relaties. Het werkt hetzelfde als het buiten schrijven (als ik me niet vergis), maar wanneer je je zoekopdracht herstructureert, kun je eenvoudig de hele relatie verwijderen zonder de relatievoorwaarden daarbuiten te vergeten.



  1. Wat is het SQL-commando om de veldnamen van een tabel te retourneren?

  2. Zijn UNIQUE-indexen hoofdlettergevoelig in MySQL?

  3. Installeer PostgreSQL op Ubuntu 18.04

  4. Selecteer op een eenvoudige manier de rechterkolom als primaire sleutel voor een bepaalde tabel