Size: a a a

2020 August 29

AG

Alexander Grigorev in Laravel Pro
если в поиске набрать updateorcreate duplicate entry  там эта проблема существует
если вставок много, то между проверкой на существование записи и вставкой, может вставиться другая запись, транзакции не хочу, это замедлит, да и нет возможности, myisam
источник

АГ

Алексей Гевондян... in Laravel Pro
поэтому лучше используй uuid
источник

АГ

Алексей Гевондян... in Laravel Pro
если у тебя хайлоад - то апдейты это очень серьезные тормоза.
источник

АГ

Алексей Гевондян... in Laravel Pro
тебе нужна табличка без индексов на инсерт
источник

AG

Alexander Grigorev in Laravel Pro
$uid = md5($ip . $brow);

$online = Online::query()
     ->where('uid', $uid)
     ->when($userId, static function (Builder $query) use ($userId) {
          return $query->orWhere('user_id', $userId);
           })
     ->first();
источник

АГ

Алексей Гевондян... in Laravel Pro
brow это что?
источник

AG

Alexander Grigorev in Laravel Pro
uid это md5 ip + браузер
источник

АГ

Алексей Гевондян... in Laravel Pro
а, и сколько у тебя записей в таблице?
источник

AG

Alexander Grigorev in Laravel Pro
Записей мало, они удаляются через 10 минут, в среднем 100-200
источник

АГ

Алексей Гевондян... in Laravel Pro
ну почему ты не хочешь сделать createOrUpdate то?
источник

АГ

Алексей Гевондян... in Laravel Pro
можно и чистый sql on duplicate update или как там его
источник

AG

Alexander Grigorev in Laravel Pro
Потому что там нет решения проблемы с дубликатами, редко но будет проскакивать  Integrity constraint violation: 1062
источник

АГ

Алексей Гевондян... in Laravel Pro
чтобы точно быстро было и надежно
источник

АГ

Алексей Гевондян... in Laravel Pro
на худой конец можно обернуть это в трай кетч и игнорить) сильно хуже все равно не станет)
источник

АГ

Алексей Гевондян... in Laravel Pro
что тебе здесь точно не нужно - так это селект. вот совсем не нужен он тебе тут.
источник

АГ

Алексей Гевондян... in Laravel Pro
идеально - если только инсерт. ну апдейт еще туда сюда.
источник

AG

Alexander Grigorev in Laravel Pro
Это то да, спасибо, меня интересует больше почему дубликаты не игнорятся, хотя все работало
источник

AG

Alexander Grigorev in Laravel Pro
Если по коду спуститься updateOrCreate вызывает firstOrNew который делает select
источник

АГ

Алексей Гевондян... in Laravel Pro
источник

АГ

Алексей Гевондян... in Laravel Pro
может тут найдешь овет... по идее insert ignore запрос не должен падать с ошибкой дублирования ключа. но возможно innodb нужен
источник