/** * Delete objects matching a condition against linked objects * * @param CriteriaElement|null $criteria criteria to match * * @return false|int count of objects * * @todo DELETE ... LEFT JOIN is not portable * Note Alain91 : multi tables delete is not allowed in Doctrine */ public function deleteByLink(CriteriaElement $criteria = null) { if (!$this->validateLinks()) { return false; } if (empty($criteria)) { //avoid delete all records return false; } $sql = "DELETE FROM {$this->handler->table} AS o " . "LEFT JOIN {$this->handler->table_link} AS l " . "ON o.{$this->handler->field_object} = l.{$this->handler->field_link}"; if (isset($criteria) && $criteria instanceof CriteriaElement) { $sql .= " " . $criteria->renderWhere(); } return $this->handler->db2->executeUpdate($sql); }