Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để thực hiện một truy vấn đã kết hợp trong giao diện bảng 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);

Rất tiếc, Zend_Db_Table Giao diện mối quan hệ không có nhiều thông tin liên quan đến việc tạo các truy vấn được kết hợp từ bản đồ tham chiếu đã khai báo của nó. Giải pháp do cộng đồng đóng góp cho các truy vấn phức tạp là Zend_Db_Table_Select nhà máy truy vấn.

Lưu ý rằng bạn phải cung cấp bí danh cột cho tên và mô tả của nhà sản xuất, nếu không các cột này sẽ chặn tên và mô tả của mô hình trong mảng kết hợp cho dữ liệu hàng. Bạn nên đặt tên các cột rõ ràng để tránh điều này.

Nhưng trong trường hợp của bạn, tôi sẽ bỏ qua giao diện bảng và giao diện chọn, và chỉ cần thực hiện truy vấn SQL trực tiếp bằng bộ điều hợp 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%'");

Bạn sẽ lấy lại dữ liệu dưới dạng một mảng mảng kết hợp đơn giản, không phải dưới dạng Zend_Db_Table_Rowset . Nhưng vì dù sao thì một bộ row đã tham gia cũng không thể ghi được nên bạn đã không hy sinh nhiều.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trợ giúp về PHP và SQL Hashing:Tôi đang làm gì sai?

  2. MySQLi không chuẩn bị được một câu lệnh

  3. Thiết lập cơ sở dữ liệu lớn trong MySQL để phân tích trong R

  4. Làm cách nào để kết xuất tệp MySQL mà không có Khóa ngoại qua dòng lệnh?

  5. TOP 5 Cú pháp Xóa MySQL với Mẹo dành cho Nhà phát triển T-SQL