INSERT IGNORE

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
poohbinar
Сообщения: 28
Зарегистрирован: 2012.12.26, 16:58

INSERT IGNORE

Сообщение poohbinar »

Привет. Создал уникальный индекс. Хочу сделать INSERT IGNORE.

Код: Выделить всё

        $roomSpectator = new RoomSpectators;
        $roomSpectator->setScenario('join');
        $roomSpectator->load($_POST, 'user-join');
        if ($roomSpectator->save()) {
 
Можно ли используя данный код, малой кровью добавить игнор?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: INSERT IGNORE

Сообщение samdark »

Если не хочется делать лишний SELECT, то:

Код: Выделить всё

try {
  if ($roomSpectator->save()) {
    ...
} catch (Exception $e) {
   // do nothing
}
 
poohbinar
Сообщения: 28
Зарегистрирован: 2012.12.26, 16:58

Re: INSERT IGNORE

Сообщение poohbinar »

Спасибо, я в общем то тоже других вариантов не придумал
Аватара пользователя
warlook
Сообщения: 11
Зарегистрирован: 2012.06.21, 18:07

Re: INSERT IGNORE

Сообщение warlook »

Такой же вопрос, при batchInsert возможно ли как-то добавить опцию IGNORE?

Код: Выделить всё

return Yii::$app->db->createCommand()->batchInsert(
      'table',
       'columns',
      $rows
)->execute(); 
Например, повторный запуск после сбоя может вернуть ошибку уникальности ключей, хотелось бы этого избегать. Есть такая возможность из коробки?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: INSERT IGNORE

Сообщение samdark »

Нет.
Vassia-tt
Сообщения: 2
Зарегистрирован: 2015.09.19, 17:28

Re: INSERT IGNORE

Сообщение Vassia-tt »

Подскажите, пожалуйста, использую конструкцию try catch, но при дублировании уникального значения все равно получаю PDOException.
Vassia-tt
Сообщения: 2
Зарегистрирован: 2015.09.19, 17:28

Re: INSERT IGNORE

Сообщение Vassia-tt »

Нашел причину, нужно было
try {
$model->save();
} catch(\yii\db\Exception $e) {
//do somethings...
}
delgus
Сообщения: 55
Зарегистрирован: 2018.01.29, 14:07
Откуда: Ярославль

Re: INSERT IGNORE

Сообщение delgus »

warlook писал(а): 2015.03.03, 20:55 Такой же вопрос, при batchInsert возможно ли как-то добавить опцию IGNORE?

Код: Выделить всё

return Yii::$app->db->createCommand()->batchInsert(
      'table',
       'columns',
      $rows
)->execute(); 
Например, повторный запуск после сбоя может вернуть ошибку уникальности ключей, хотелось бы этого избегать. Есть такая возможность из коробки?
Я на это дело юзаю следующий костыль :lol:

Код: Выделить всё

 $command = Yii::$app->db->createCommand()->batchInsert(Value::tableName(),
                        ['characteristic_id','value_id', 'product_id' ],
                        $data
                    );
                    $command->sql = str_replace("INSERT","INSERT IGNORE",$command->sql);
                    $command->execute();
Ответить