Модель Laravel найти возвращаемый ноль для существующего идентификатора - PullRequest
0 голосов
/ 12 октября 2018

Я сталкиваюсь с этой проблемой при поиске модели для существующего идентификатора, который возвращает ноль и показывает ошибку ниже.

Создание объекта по умолчанию из пустого значения

Этот идентификатор существуетв базе данных, но он по-прежнему возвращает ноль.

$model = Shoppinglist::find($id);
$model->buy_it = 1;
$model->qty= $qty;
$model->save();

Эта проблема начинается, когда я изменяю тип столбца с qty на float, потому что я хочу сохранить плавающие значения в столбце db.Я потратил часы на эту проблему и до сих пор не могу решить.Я проверил, предоставив статическое значение вместо переменной $ id.Я проверил, преобразовав $ id в int.

Ответы [ 5 ]

0 голосов
/ 19 октября 2018

В большинстве случаев пользователь создает другой первичный ключ, такой как shoppinglist_id, вместо id, а затем находит, что функция не работает. Вы должны добавить

protected $primaryKey = 'shoppinglist_id';

Вы должны добавить вышеуказанный код в свою модель. Shoppinglist

В качестве альтернативы

$shopping = Shoppinglist::where('table_priamry_key', $id)->first();
dd($shopping); 

, если вы используете мягкое удаление, то добавьте программное удаление, где можно получить результат

0 голосов
/ 18 октября 2018

В этом вопросе необходимо рассмотреть случаи.

Сначала я предлагаю явно объявить первичный ключ в вашей модели:

protected $primaryKey = 'shopping_list_id'; // or 'id' depending on your specified primary key
0 голосов
/ 15 октября 2018

Проверьте, использовали ли вы программную черту удаляет, а столбец удаленных в пустом месте в дБ и убедитесь, что вы указали идентификатор в качестве первичного ключа в таблице и, наконец, поместите

protected $table = "shopping_lists"

в файле модели ShoppingList

или проверьте, совпадают ли название вашей модели и таблицы

0 голосов
/ 17 октября 2018

возможно значение $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));
0 голосов
/ 15 октября 2018

Перед использованием find($id) вы должны проверить, что ключ в вашей таблице является первичным ключом, в противном случае вы можете использовать where('id', $id)->get().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...