Remove doesn't work, when using an ALIAS for the primary table
Remove doesn't work, when using an ALIAS for the primary table

We decided to use multisite for some of our WordPress instances.
In the definition of the EDITOR i used an ALIAS for the primary table, so that i don't need to define the table-prefixes through PHP- in JS-code .
Editor::inst( $db, $table.' as conclusion',"conclusion_id" )
->fields(...
With editing those rows, everything works fine, but when deleting/removing that row, i get an error
(in my case) : DELETE FROM pc_29_dataprocessor_conclusion as conclusion
WHERE (conclusion
.conclusion_id
= 22 )
So i extended the _delete-function in Query.php (version 1.9.2.) as follows. I would apprreciate, if that extension or attempt of improvement would be pushed and the solultion will find a way in one of the next versions:
protected function _delete()
{
$del_sql = 'DELETE FROM ';
if(strpos($this->_build_table(),'as') === FALSE)
{
$del_sql .= ''.$this->_build_table();
}
else
{
$tbl_array = explode(' as ',$this->_build_table());
$org_tbl = $tbl_array[0];
$alias_tbl = $tbl_array[1];
$del_sql .= ''.$alias_tbl;
$del_sql .= ' USING '.$this->_build_table();
}
$del_sql .= $this->_build_where();
$this->_prepare( $del_sql );
return $this->_exec();
}
Replies
Thanks for this. What database type are you using please?
I put a similar fix into our NodeJS libraries recently. I've created an internal bug to ensure this goes into the PHP libs as well.
Allan
MySQL ! But i think it's similar in Oracle, Postgres or DB2.
Thanks - I'll post back when we've got it fixed. I've flagged it for the next release (which will be 1.9.3).
Allan