Создал сущность
BookTable. Добавил
UniqueValidator для поля
NAME. Теперь в случае, если обнаруживается дубликат, то запись не добавляется, а
Result::isSuccess возвращает
false.
class BookTable extends DataManager
{
public static function getMap()
{
return [
new Fields\IntegerField('ID', [
'primary' => true,
'autocomplete' => true,
]),
new Fields\TextField('NAME', [
'validation' => function() {
return [
new Fields\Validators\UniqueValidator('Not unique'),
];
}
]),
];
}
}
Как в случае обнаружения дубликата получить
ID уже существующей записи с этим
NAME?
Сейчас я использую
BookTable::getRow с фильтром по
NAME в случае, если обнаружился дубликат.
$result = BookTable::add([
'NAME' => 'NAME',
]);
if ($result->isSuccess()) {
$result->getId();
} else {
BookTable::getRow(['select' => ['ID'], 'filter' => ['NAME' => 'NAME']])['ID']; // Приходится делать дополнительный запрос
}
Адекватно ли это решение?