Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wykonać zapytanie sprzężone w interfejsie 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);

Niestety Zend_Db_Table Interfejs relacji nie ma w sobie zbyt dużej inteligencji związanej z tworzeniem zapytań łączonych z zadeklarowanej mapy odniesienia. Opracowanym przez społeczność rozwiązaniem dla złożonych zapytań jest Zend_Db_Table_Select fabryka zapytań.

Pamiętaj, że musisz podać aliasy kolumn dla nazwy i opisu producenta, w przeciwnym razie kolumny te pominą nazwę i opis modelu w tablicy asocjacyjnej dla danych wiersza. Powinieneś wyraźnie nazwać kolumny, aby tego uniknąć.

Ale w twoim przypadku pominąłbym interfejs tabeli i interfejs select i po prostu wykonałbym zapytanie SQL bezpośrednio za pomocą adaptera 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%'");

Otrzymasz dane z powrotem jako prostą tablicę tablic asocjacyjnych, a nie jako Zend_Db_Table_Rowset . Ale ponieważ połączony zestaw wierszy i tak nie jest zapisywalny, nie poświęciłeś wiele.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje sterownik mysql na nodejs, który obsługuje procedury składowane?

  2. Wprowadzanie zmian w wielu rekordach na podstawie zmiany pojedynczego rekordu za pomocą SQL

  3. Co sprawdzić, jeśli wykorzystanie pamięci MySQL jest wysokie?

  4. Sequel Pro z Mysql w Docker

  5. Entity Framework Code First MaxLength i FixedLegth (znak vs varchar)