Insert ignore в Битрикс D7 и ленивый программист

Углубленное изучение Битрикс
  • Insert ignore в Битрикс D7 и ленивый программист

    Антон Долганин 21 Декабря 2015 13:03 1984
    Ленивый программист на проводе. Задача простая: отсекать добавление записей в таблицу, если такая запись по ключу (например, двойному) уже есть. Insert ignore в чистом mysql приходит на помощь. Но как быть в D7?

    Есть вариант писать свой запрос, и отказываться от всех прелестей D7. Есть вариант, сводящий на нет все прелести ключей, делать сначала запрос. Не варианты. Лень. На помощь приходит хак, который мы разобрали не так давно.

    А теперь ловкость рук:
       public static function add($fields)
       {
          try {
             return parent::add($fields);
          } catch (\Exception $e) {
             $result = new Entity\AddResult();
             $result->addError(new Entity\EntityError('Конфликт ключей.'));
             return $result;
          }
       }

    Готово.