Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Yii2 - gabung kiri dengan beberapa syarat

Saya percaya ini adalah solusi yang lebih baik. Alih-alih menggunakan kueri mentah seperti leftJoin Anda harus melengkapi joinWith . Anda hubungan dengan andOnCondition (yang menambahkan kondisi mana yang diperlukan ke dalam pernyataan bergabung Anda).

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

Selain itu terlihat lebih bersih ketika Anda menulis where klausa di dalam relasi. Ini bekerja sama seperti menulisnya di luar (jika saya tidak salah), tetapi ketika memfaktorkan ulang kueri Anda, Anda dapat dengan mudah menghapus seluruh relasi tanpa melupakan kondisi relasi di luar.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat langsung melihat data yang dimasukkan dari MySQL

  2. Kueri MySQL cepat ketika dijalankan secara langsung tetapi sangat lambat ketika dijalankan sebagai proc

  3. Bagaimana cara menulis REST API?

  4. Cara Menambahkan Pemisah ke String Gabungan di MySQL – CONCAT_WS()

  5. Kode Django atau pemicu MySQL