Задать вопрос
mrsexy
@mrsexy
Senior Pomidor

Как достать из массива json массив?

Проблема в чём.. Раньше $items->attributes, возвращало весь массив опций выбранный клиентом. Сейчас же нихрена! Я обновил модули... Теперь не могу получить их список в админке. $item->associatedModel - ругается, в массиве выдаёт данные в корзине, но не могу получить эти данные на беке. Там массив внутри массива!
В чекауте работает @foreach($item->associatedModel as $key => $value)
А в админке я не могу получить массив внутренний. Из серии {{ $value }} . Массив из $item получить не проблема, а вот что внутри проблема.6144544acbe60337795573.png

Крч мне нужно получить массив из атрибутов $item->associatedModel. В базе attribute_value это JSON. Но он мне вечно NULL выдает по запросу. Крч я очень туплю, не могу понять где?!)

Тупость - не порок!

Не вижу смысла, но для нужд, модель:
<?php

namespace App\Repositories;

use Cart;
use App\Models\Order;
use App\Models\Product;
use App\Models\OrderItem;
use App\Contracts\OrderContract;

class OrderRepository extends BaseRepository implements OrderContract
{
    public function __construct(Order $model)
    {
        parent::__construct($model);
        $this->model = $model;
    }

    public function storeOrderDetails($params)
    {

        $order = Order::create([
            'order_number'      =>  strtoupper(uniqid()),
            'user_id'           =>  auth()->user()->id,
            'status'            =>  'pending',
            'grand_total'       =>  Cart::getSubTotal(),
            'item_count'        =>  Cart::getTotalQuantity(),
            'payment_status'    =>  0,
            'payment_method'    =>  $params['pay'],
            'discord'           =>  $params['discord'],
            'battle_tag'        =>  $params['battle_tag'],
            'skype'             =>  $params['skype'],
            'email'             =>  $params['email'],
            'notes'             =>  $params['notes'],

        ]);

        if ($order) {

            $items = Cart::getContent();

            foreach ($items as $key => $item)
            {
                // A better way will be to bring the product id with the cart items
                // you can explore the package documentation to send product id with the cart
                $product = Product::where('name', $item->name)->first();

                $orderItem = new OrderItem([
                    'product_id'    =>  $product->id,
                    'quantity'      =>  $item->quantity,
                    'qty_slider'      =>  $item->qty_slider, // Принимает значения слайдера.
                    'price'         =>  $item->getPriceSum(),
                    'attribute_value' =>  $item, // Вот тут фокус. Собирает пачку в JSON, дальше не разобрать. До апдейта работало норм. Сейчас же костыль нужен какой-то..

                ]);

                $order->items()->save($orderItem);
            }
        }

        return $order;
    }

    public function listOrders(string $order = 'id', string $sort = 'desc', array $columns = ['*'])
    {
        return $this->all($columns, $order, $sort);
    }

    public function findOrderByNumber($orderNumber)
    {
        return Order::where('order_number', $orderNumber)->first();
    }
}


Вот чекаут
@foreach(Cart::getContent() as $item)
                    <div class="card_item">
                        <div class="left_tems">
                            <a href="{{ $item->slug }}" class="col_img">
                                <img src="{{ $item->conditions }}" alt="">
                            </a>
                            
                            <div class="col_name">
                                <span class="name">{{ Str::words($item->name,20) }}</span>
                                @foreach($item->associatedModel as $key => $value)
  • Вопрос задан
  • 168 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 2
PeterLS
@PeterLS
Руководитель веб-студии
Пробуйте методом тыка с дампами.
try {
  $item = json_decode('your json');
} catch (\Exception $e) {
  dd($e);
}
dd($item);
dd($item->associatedModel);
dd($item->associatedModel->toArray()); // if collection


Ну а тут по другому никак))
Ответ написан
Комментировать
tomclancys
@tomclancys
$item->associatedModel на $item['associatedModel']
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы