Задать вопрос
@Hfnas

Model::updateOrCreate почему не считывает в первом параметре, второй элемент массива?

Model::updateOrCreate(['amoID' => 43222233, 'crmCompanyID'=>1]);

Выдает ошибку:

Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1364 Field 'crmCompanyID' doesn't have a default value (SQL: insert into `Model` (`amoID`, `updated`, `created`) values (43222233, 2025-01-05 20:41:11, 2025-01-05 20:41:11))

Значение по умолчанию нет, но задан параметр.
В бд есть уникальный ключ (amoID, crmCompanyID)
  • Вопрос задан
  • 69 просмотров
Подписаться 1 Простой 10 комментариев
Пригласить эксперта
Ответы на вопрос 1
@zordec
Метод updateOrCreate() работает следующим образом:

  1. Поиск существующей записи: Использует первый массив (условия поиска).
  2. Обновление или создание записи:
    • Если запись найдена, значения из второго массива используются для обновления.
    • Если запись не найдена, создаётся новая запись с использованием первого массива для условий и второго массива для заполнения полей.




В вашем коде отсутствует указание поля crmCompanyID в параметрах для создания записи. Следовательно, Laravel пытается вставить NULL (или пропускает поле), что вызывает ошибку, так как это поле не допускает NULL и не имеет значения по умолчанию.
Model::updateOrCreate(
    ['amoID' => 43222233], // Условия для поиска
    ['crmCompanyID' => 1, 'updated' => now(), 'created' => now()] // Данные для обновления или создания
);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы