2

Joomla2.5でLEFTJOINを使用して削除コードを実装しようとしています:

$cid = JRequest::getVar('cid', array(), 'post', 'array');

$query = $db->getQuery(true);

$query->delete($db->quoteName('table1').' AS t1');

$query->leftJoin($db->quoteName('table2').
' AS t2 ON t2.table_1_id = t1.id ');

$query->where(array('t1.id IN ('.  implode(',', $cid).')'));

$db->setQuery($query);

try {
  $db->query(); 
} catch (Exception $e) {
  echo $e->getMessage();
}

私が得るものは:

DELETE FROM `table1` AS t1
LEFT JOIN `table2` AS t2 ON t2.table_1_id = t1.id 
WHERE t1.id IN (48)

このSQLクエリは正しくありません。私が必要なのは:

DELETE t1.*,t2.* FROM `table1` AS t1
LEFT JOIN `table2` AS t2 ON t2.table_1_id = t1.id 
WHERE t1.id IN (48)

では、正しいSQLクエリを取得するためにJoomlaクエリをどのように変更する必要がありますか?何か案は?

4

1 に答える 1

3

私は長い間Joomlaを使用してきました。私のJoomlaの知識によると、あなたがやろうとしていることを達成することはできません$query->delete()。クエリは少しトリッキーなので、以下の方法を使用して実行できます。

$db = JFactory::getDBO();
$query = "DELETE t1.*,t2.* FROM `table1` AS t1
LEFT JOIN `table2` AS t2 ON t2.table_1_id = t1.id 
WHERE t1.id IN (48)"; // you can replace the line with array('t1.id IN ('.  implode(',', $cid).')')
$db->setQuery($query);
$db->query();
于 2012-12-17T05:11:26.650 に答える