protected function _exists()
{
$primaryKeys = $this->modelsMetadata->getPrimaryKeyAttributes($this);
if (count($primaryKeys) === 0) {
return false;
}
$conditions = [];
$bind = [];
foreach ($primaryKeys as $attributeField) {
if (!isset($this->{$attributeField})) {
return false;
}
$bindKey = $attributeField;
$conditions[] = $attributeField . ' =:' . $bindKey;
$bind[$bindKey] = $this->{$attributeField};
}
if (is_array($this->_snapshot)) {
$primaryKeyEqual = true;
foreach ($primaryKeys as $attributeField) {
if (!isset($this->_snapshot[$attributeField]) || $this->_snapshot[$attributeField] !== $this->{$attributeField}) {
$primaryKeyEqual = false;
}
}
if ($primaryKeyEqual) {
return true;
}
}
$sql = 'SELECT COUNT(*) as [row_count]' . ' FROM [' . $this->getSource() . '] WHERE ' . implode(' AND ', $conditions);
$num = $this->getWriteConnection()->fetchOne($sql, $bind, \PDO::FETCH_ASSOC);
return $num['row_count'] > 0;
}