В настоящее время я работаю над приложением Laravel, но у меня возникла проблема.
У меня есть модель под названием StoreDataProduct, которая имеет два приведения
protected $casts = [
'default_image' => 'array',
'images' => 'array',
];
Сейчас в двух местах моего приложения эта модель некорректно работает с приведениями.
Во-первых, где-то в методе обновления я превращаю модель в массив, чтобы быстро обновить все измененные значения.
$productArray = $currentStoreDataProduct->toArray();
Но выдает ошибку, что json_decode ожидает строку, но получает массив.
Во-вторых, я пытаюсь получить свойство продукта и поместить его в массив где-то еще в моем приложении, но оно выдает ту же ошибку.
'default_image' => $currentStoreDataProduct->default_image,
Любая помощь с этой проблемой будет принята.
dd модели-> getAttributes:
array:33 [
"store_data_product_id" => 12204
"website_id" => 5
"store_view_id" => 13
"store_data_brand_id" => null
"store_data_supplier_id" => null
"external_product_id" => 70432304
"external_variant_id" => 139154696
"name" => "ONE + Kreissäge 150mm RWSL1801M *Body only*"
"name_long" => "ONE + Kreissäge 150mm RWSL1801M *Body only*"
"name_variant" => "Default"
"description" => "ONE + Circular saw 150mm RWSL1801M *Body only*. Ideal for sawing panels, chipboards, laminated boards and wood materials. The integrated laser ensures more exact longitudinal cuts. The thin carbide saw blade ensures less resistance during sawing and a longer service life of the hand-held circular saw."
"content" => """
<p>*Body only*</p>\r\n
<p>Ideal for sawing panels, chipboards, laminated boards and wood materials. The integrated laser ensures more exact longitudinal cuts. The thin carbide saw blade ensures less resistance during sawing and a longer service life of the hand-held circular saw. One Plus is the most flexible battery tool system in the world, allowing you to use 29 different cordless power tools and 7 different garden tools with just one battery and charger. The flexibility of One Plus means for you that you can put together your own cordless tool system, entirely to your wishes, how and when you want. Invest once in a battery and charger, choose the tools you need and you can use all the tools with this one battery. You save money because you do not have to buy a battery and charger with every new tool!</p>\r\n
<h3>Highlights & Details</h3>\r\n
<ul class="product-features list--unstyled">\r\n
<li class="product-features__item">Micro softgrip</li>\r\n
<li class="product-features__item">Laser for more exact longitudinal cuts</li>\r\n
</ul>\r\n
<h3>Performance</h3>\r\n
<ul class="product-features list--unstyled">\r\n
<li class="product-features__item">Laser for more exact longitudinal cuts</li>\r\n
<li class="product-features__item">Cutting capacity of 45 mm at 90 °</li>\r\n
<li class="product-features__item">Miter adjustment up to 50 °</li>\r\n
<li class="product-features__item">Thin hard metal saw blade (1.5 mm)</li>\r\n
<li class="product-features__item">Spindle lock for simple saw blade change</li>\r\n
<li class="product-features__item">Micro softgrip.</li>\r\n
</ul>\r\n
<h3>Delivery</h3>\r\n
<ul class="product-features list--unstyled">\r\n
<li class="product-features__item">Tungsten carbide saw blade Z 18 Ø 150 mm</li>\r\n
<li class="product-features__item">Parallel stop</li>\r\n
<li class="product-features__item">Allen key.</li>\r\n
</ul>
"""
"url" => "one-cirkelzaag-150mm-70432304"
"default_image" => "{"src":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397588\/file.jpg","thumb":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397588\/50x50x2\/file.jpg"}"
"images" => "{"171826733":{"src":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397597\/file.jpg","thumb":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397597\/50x50x2\/file.jpg"},"171826727":{"src":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397594\/file.jpg","thumb":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397594\/50x50x2\/file.jpg"},"171826721":{"src":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397588\/file.jpg","thumb":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397588\/50x50x2\/file.jpg"},"171826712":{"src":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397576\/file.jpg","thumb":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397576\/50x50x2\/file.jpg"},"171826709":{"src":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397567\/file.jpg","thumb":"https:\/\/cdn.webshopapp.com\/shops\/38604\/files\/193397567\/50x50x2\/file.jpg"}}"
"meta_fields" => null
"article_code" => "140-0075"
"sku" => "5133001164"
"ean" => "4892210118554"
"cost_price_excl" => "58.82"
"price_excl" => "78.4298"
"special_price_excl" => "0"
"vat_rate" => "1.21"
"is_default" => true
"sort_order" => 1
"visibility" => "visible"
"stock_level" => 998
"stock_sold" => 1
"stock_status" => "enabled"
"weight" => 0
"settings" => "{"has_been_salable":1,"last_date_salable":{"date":"2018-05-14 08:44:30.884906","timezone_type":3,"timezone":"Europe\/Amsterdam"},"fiction_margin":0}"
"created_at" => "2018-05-12 00:06:07"
"updated_at" => "2018-05-14 10:06:07"
]
Часть зарегистрированной ошибки:
[2018-05-14 10:15:22] local.ERROR: json_decode() expects parameter 1 to be string, array given {"exception":"[object] (ErrorException(code: 0): json_decode() expects parameter 1 to be string, array given at /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:682)
[stacktrace]
#0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'json_decode() e...', '/var/www/domain...', 682, Array)
#1 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(682): json_decode(Array, true)
#2 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(491): Illuminate\\Database\\Eloquent\\Model->fromJson(Array)
#3 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(182): Illuminate\\Database\\Eloquent\\Model->castAttribute('default_image', Array)
#4 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(102): Illuminate\\Database\\Eloquent\\Model->addCastAttributesToArray(Array, Array)
#5 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(972): Illuminate\\Database\\Eloquent\\Model->attributesToArray()