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

Bagaimana cara melakukan kueri gabungan di antarmuka tabel ZF?

$models = new Models();
$select = $models->select(Zend_Db_Table::SELECT_WITH_FROM_PART);
$select->setIntegrityCheck(false)
       ->join(array("a"=>"manufacturers"), 'models.manufacturer_id = a.id',
         array("man_name"=>"name", "man_description"=>"description"))
       ->where("a.name LIKE 'A%'");
$rowset = $models->fetchAll($select);

Sayangnya Zend_Db_Table antarmuka hubungan tidak memiliki banyak kecerdasan di dalamnya terkait dengan pembuatan kueri gabungan dari peta referensi yang dideklarasikan. Solusi kontribusi komunitas untuk kueri kompleks adalah Zend_Db_Table_Select pabrik kueri.

Perhatikan bahwa Anda harus memberikan alias kolom untuk nama dan deskripsi produsen, atau kolom ini akan menyembunyikan nama dan deskripsi model dalam larik asosiatif untuk data baris. Anda harus memberi nama kolom dengan jelas untuk menghindari hal ini.

Tetapi dalam kasus Anda, saya akan melewatkan antarmuka tabel dan antarmuka pilih, dan cukup menjalankan kueri SQL secara langsung menggunakan adaptor Db:

$data = $db->fetchAll("
  SELECT m.*, a.name AS man_name, a.description AS man_description
  FROM Models m JOIN Manufacturers a ON m.manufacturer_id = a.id
  WHERE a.name LIKE 'A%'");

Anda akan mendapatkan data kembali sebagai array sederhana dari array asosiatif, bukan sebagai Zend_Db_Table_Rowset . Tetapi karena rowset yang digabungkan tidak dapat ditulisi, Anda tidak banyak berkorban.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengubah IP menjadi Long di MySQL

  2. kenaikan otomatis mySQL meningkat 10 (ClearDB &Node)

  3. Bagaimana cara menguji pernyataan Pembaruan SQL sebelum menjalankannya?

  4. Bagaimana cara membatasi suara per hari dengan IP dalam pemungutan suara Php + MySQL?

  5. Bagaimana cara menjatuhkan unik di MySQL?