Support ON DUPLICATE KEY UPDATE (upsert) queries

This commit is contained in:
Kijin Sung 2020-06-27 00:58:24 +09:00
parent 7f8312ee1a
commit 6f0ecd26a7
2 changed files with 30 additions and 7 deletions

View file

@ -80,13 +80,6 @@ class DBQueryParser
}
// Load columns.
if ($xml->columns && $select_distinct = trim($xml->columns['distinct']))
{
if ($select_distinct === 'distinct' || toBool($select_distinct))
{
$query->select_distinct = true;
}
}
foreach ($xml->columns->column as $tag)
{
if ($tag->getName() === 'query')
@ -181,6 +174,24 @@ class DBQueryParser
$query->columns[] = $column;
}
// Check the SELECT DISTINCT flag.
if ($xml->columns && $select_distinct = trim($xml->columns['distinct']))
{
if ($select_distinct === 'distinct' || toBool($select_distinct))
{
$query->select_distinct = true;
}
}
// Check the ON DUPLICATE KEY UPDATE (upsert) flag.
if ($query->type === 'INSERT' && $update_duplicate = trim($xml['update_duplicate'] ?: $xml['update-duplicate']))
{
if (toBool($update_duplicate))
{
$query->update_duplicate = true;
}
}
// Return the complete query definition.
return $query;
}