поле не может быть пустым, но указано - PullRequest
1 голос
/ 03 апреля 2020

Здравствуйте, у меня есть проблема, я думаю, что это легко для кого-то, но я не вы, а человек :) Так что моя проблема заключается в следующем:

SQLSTATE[HY000]: General error: 1364 Field 'quantity' doesn't have a default value (SQL: insert into products (title, price, description, subtitle, token, type_of_product, category, updated_at, created_at) values (bonjour, 20, bonjour, bonjour, MWnBp|z|/#o"/G, 1, hello, 2020-04-03 20:33:38, 2020-04-03 20:33:38))

Я указал поле в мой блейд-файл:

 <input name="quantity" placeholder="Quantity Of Your Product">

Мой контроллер:

//Create Product In Database with Mysql eloquent
public function pushFormProduct(Request $request){
    $inputs = $request->all();
    $product = new Product();
    $product->title = $inputs['title'];
    $product->subtitle = $inputs['subtitle'];
    $product->description = $inputs['description'];
    $product->quantity = $inputs['quantity'];
    $product->price = $inputs['price'];
    $product->type_of_product = $inputs['type_of_product'];
    $product->category = $inputs['category'];
    $product->create($inputs);
    return redirect(route('admin.view.product'));
}

А если я:

dd($inputs['quantity'])

Это вернет мне точное количество продукта.

Но если я пу sh все поле для создания новых продуктов, у меня есть ошибка (я объявил об этом в положительном свете:))

Так что я не знаю, кто и почему у меня есть эта ошибка, потому что поле имеет хорошее значение. Любая цель?

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Вы делаете пару вещей неправильно:

  1. Если вы хотите использовать метод create, вам нужно иметь количество в качестве заполняемого в массиве $ fillable protected свойства вашей модели. например,
class Product extends Model
{
    protected $fillable = [
        'title',
        'subtitle',
        'description',
        'quantity', // <---
        'price',
        'type_of_product',
        'category',
    ];
}

Вы неправильно используете команду create. Вы должны позвонить Product::create($request->all()) вместо. Или:

Product::create(
    $request->only([
        'title',
        'subtitle',
        'description',
        'quantity',
        'price',
        'type_of_product',
        'category',
    ])
);
Если используется новый экземпляр модели, например $product = new Product; (который позволяет обходить заполняемый объект, если вы задаете, например, $product->quantity = 123;, то вам нужно позвонить $product->save(); впоследствии.
1 голос
/ 03 апреля 2020

Укажите поле quantity как заполняемое

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