Tôi đang cố gắng tham gia vào 2 bảng trong Zend, sử dụng cấu trúc DbTable/model/mapper. Nếu trong mapper của tôi, tôi làm điều này:"IS NULL" trong Zend_Db_Table chọn không hoạt động
$select = $this->getDbTable()->select(Zend_Db_Table::SELECT_WITH_FROM_PART)
->setIntegrityCheck(false)
->join('images', 'images.oldFilename =
availablePictures.filename')
->where('images.ref IS NOT NULL');
$resultSet = $this->getDbTable()->fetchAll($select);
nó hoạt động như một nét duyên dáng, nhưng nếu tôi cố gắng điều tương tự với IS NULL thay vì NOT NULL, tôi nhận được gì nơi tôi sẽ nhận được một tập hợp kết quả của một số hàng, giống như khi tôi thử trực tiếp trong MySQL với
SELECT *
FROM (
`availablePictures` AS a
LEFT JOIN `images` AS i ON a.filename = i.oldFilename
)
WHERE i.`ref` IS NULL
Tôi có ấn tượng Zend không giống như IS NULL của tôi hoặc tôi đang làm điều gì đó sai?
Bạn đã thử Zend_Debug :: dump ($ select -> __ toString()); để xem sql nó tạo ra? Nếu bạn sao chép dán câu lệnh sql đó vào mysql, bạn có nhận được kết quả chính xác không? Nếu không, có gì khác với phiên bản được nhập theo cách thủ công? – PatrikAkerstrand
Cảm ơn bạn! Làm như vậy tôi phát hiện ra rằng Zend đang tạo ra một tham gia bên trong thay vì tham gia bên trái tôi cần. Vì vậy, bằng cách sử dụng -> joinLeft() vấn đề của tôi đã được giải quyết. – Peter