В моем приложении laravel есть файл json, который я использую для добавления некоторых продуктов в свою базу данных. По какой-то причине, когда я пытаюсь сохранить продукт, я вставляю пустые значения в поля title и productcategory_id, даже если значения массива есть, json преобразуется в массив с json_decode.
Это мои логи c:
<?php
use Illuminate\Database\Seeder;
use App\Models\Product;
class ProductsSeeder extends Seeder
{
public function run()
{
$json = File::get(base_path().'/json/Products.json');
$products = json_decode($json, true);
var_dump($products);
foreach ($products as $product)
{
echo($product['title']);
echo($product['productcategory_id']);
$product = new Product();
$product->title = $product['title'];
$product->productcategory_id = $product['productcategory_id'];
$product->save();
}
}
}
Выдержка из моего json файла:
[
{ "productcategory_id" : 1, "title":"Hamb.Ternera Maxi"},
{ "productcategory_id" : 1, "title":"Hamb. Ternera Doble"},
{ "productcategory_id" : 1, "title":"Hamb. Pollo"},
{ "productcategory_id" : 1, "title":"Hamb. Mini"},
{ "productcategory_id" : 1, "title":"Camp. clásico"},
{ "productcategory_id" : 1, "title":"Camp. ternera"},
]
Как видите, я использую var_dump, чтобы увидеть данные json правильно преобразуются в массив php asso c, но я все еще получаю сообщение об ошибке. Полное сообщение об ошибке в моей оболочке:
Illuminate\Database\QueryException : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'title' cannot be null (SQL: insert into `products` (`title`, `productcategory_id`, `updated_at`, `created_at`) values (, , 2020-02-16 20:25:51, 2020-02-16 20:25:51))
at C:\xampp\htdocs\dtcburger\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664
660| // If an exception occurs when attempting to run a query, we'll format the error
661| // message to include the bindings with SQL, which will make this exception a
662| // lot more helpful to the developer instead of just the database's errors.
663| catch (Exception $e) {
> 664| throw new QueryException(
665| $query, $this->prepareBindings($bindings), $e
666| );
667| }
668|
Exception trace:
1 PDOException::("SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'title' cannot be null")
C:\xampp\htdocs\dtcburger\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458
2 PDOStatement::execute()
C:\xampp\htdocs\dtcburger\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458
Please use the argument -v to see more details.