Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да направя обединена заявка в интерфейса на 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);

За съжаление Zend_Db_Table relations интерфейсът няма много интелигентност в него, свързана със създаването на обединени заявки от неговата декларирана референтна карта. Допринесеното от общността решение за сложни заявки е Zend_Db_Table_Select фабрика за заявки.

Имайте предвид, че трябва да дадете псевдоними на колони за името и описанието на производителя, в противен случай тези колони ще потиснат името и описанието на модела в асоциативния масив за данните от редовете. Трябва да именувате колоните ясно, за да избегнете това.

Но във вашия случай бих пропуснал интерфейса на таблицата и интерфейса за избор и просто бих изпълнил SQL заявка директно с помощта на 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%'");

Ще получите обратно данните като прост масив от асоциативни масиви, а не като Zend_Db_Table_Rowset . Но тъй като присъединен набор от редове така или иначе не може да се записва, не сте пожертвали много.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. използвайте mysql SUM() в клауза WHERE

  2. Golang, mysql:Грешка 1040:Твърде много връзки

  3. Вземете обратно заявка от подготвеното изявление за PDO

  4. Може ли да се използва число за именуване на колона на MySQL таблица?

  5. Mysql 1050 Таблица за грешки вече съществува, но всъщност не съществува