Я столкнулся с этой проблемой поиска модели для существующего идентификатора, который возвращает значение null и показывает ошибку ниже.
Creating default object from empty value
Этот идентификатор существует в базе данных, но по-прежнему возвращает значение null.
$model = Shoppinglist::find($id);
$model->buy_it = 1;
$model->qty= $qty;
$model->save();
Эта проблема начинается, когда я меняю тип количества столбцов с на (10) на float, потому что я хочу сохранить плавающие значения в столбце db. Я потратил несколько часов на эту проблему, но все еще не могу ее решить. У меня есть проверка, предоставив значение статического идентификатора вместо переменной $ id. Я проверил, преобразовав $ id в int.
что показывает dd($model)?
dd ($ model) возвращает значение null.
что показывает echo $id?
Для этого нам понадобится схема вашей базы данных и код вашей модели.
Опубликуйте схему своей базы данных с классом вашей модели.






Перед использованием find($id) вы должны убедиться, что ключ в вашей таблице является первичным ключом, в противном случае вы можете использовать where('id', $id)->get().
Проверьте, использовали ли вы черту мягких удалений, и ваш столбец удаленного в пуст в db, и убедитесь, что вы сделали id в качестве первичного ключа в таблице и, наконец, поместили
protected $table = "shopping_lists"
в вашем файле модели ShoppingList
или проверьте, совпадает ли название вашей модели и название таблицы
возможно, значение $id рассматривается как строка, поэтому попробуйте использовать intval()
$model = Shoppinglist::find(intval($id));
$model->buy_it = 1;
$model->qty= $qty;
$model->save();
или если вам нужен новый метод, вы можете попробовать использовать first() или findOrFail() вместо find()
$model = Shoppinglist::first(intval($id));
$model = Shoppinglist::findOrFail(intval($id));
В этом вопросе есть кейсы, которые стоит рассмотреть.
Во-первых, я предлагаю явно объявить первичный ключ в вашей модели:
protected $primaryKey = 'shopping_list_id'; // or 'id' depending on your specified primary key
В большинстве сценариев пользователь создает другой первичный ключ, например shoppinglist_id вместо id, затем обнаруживает, что функция не работает, вам нужно добавить
protected $primaryKey = 'shoppinglist_id';
Вы должны добавить приведенный выше код в список покупок вашей модели.
Альтернативно
$shopping = Shoppinglist::where('table_priamry_key', $id)->first();
dd($shopping);
если вы используете мягкое удаление, добавьте программное удаление, чтобы получить результат
Надеюсь, это поможет кому-то, кто столкнется с этим позже. У меня была та же проблема, которая возникла из-за первичного ключа моей модели. Я установил $primaryKey = another_field, который не указывал на id, который я пытался достать. Так что все, что я сделал, это установил $primaryKey = 'id', и все было круто. Удачного кодирования ...
Если у вас не установлено свойство $ primaryKey в вашем МОДЕЛЬ, оно будет предполагать я бы.
Метод find () находит Модель по свойству $ primaryKey. Поэтому, если вы хотите изменить первичный ключ по умолчанию в Eloquent, вам это понадобится.
protected $primaryKey = 'email';
так что если вы dd ($ model); сразу после оператора find вы получаете null?