nette / database

💾 A database layer with a familiar PDO-like API but much more powerful. Building queries, advanced joins, drivers for MySQL, PostgreSQL, SQLite, MS SQL Server and Oracle.
https://doc.nette.org/database
Other
512 stars 108 forks source link

Missing LEFT JOIN in DELETE #255

Open TonnyJe opened 4 years ago

TonnyJe commented 4 years ago

Version: ^3.0

Bug Description

Wrong SQL generation for joining tables with DELETE.

Steps To Reproduce

This code

$this->database->table('is_document_item')
                ->where('document.code', 202750006)
                ->where('amount', 0)
                ->fetchAll();

generates this query:

SELECT `is_document_item`.`id` 
FROM `is_document_item` 
LEFT JOIN `is_prijemka_vydejka` `document` ON `is_document_item`.`document_id` = `document`.`id` 
WHERE (`document`.`code` = 202750006) AND (`amount` = 0)

which is exactly what is expected.

But if I change ->fetchAll() to ->delete() so its generate this:

DELETE 
FROM `is_document_item` 
WHERE (`document`.`code` = 202750006) AND (`amount` = 0)

which causes this error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'document.code' in 'where clause'

Expected Behavior

I think that is clear.