Десериализация данных корзины не работает Laravel - PullRequest
0 голосов
/ 28 мая 2020

Я сохраняю продукты моей корзины как несериализованные данные из сеанса корзины.

$ order = new Order ();

$order->cart = serialize($cart);
$order->code = strtoupper(str_random(15));
$order->user_id = Auth::user()->id;

$order->save();

теперь мне нужно десериализовать данные, чтобы использовать это в моем файле лезвия, это функция, которую я использую

$orders = Order::with('user')->findOrFail($order->id);

        $orders->transform(function($order, $key){

            $order->cart = unserialize($order->cart);

            return $order;

        });

        dd($orders);

Я получаю эту ошибку

BadMethodCallException Вызов неопределенного метода App \ Order :: transform ( )

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

любые идеи ???

Ответы [ 2 ]

1 голос
/ 28 мая 2020

С помощью findOrFail вы получаете только один экземпляр модели, а не коллекцию.

$orders = Order::with('user')->findOrFail($order->id);

И что такое $ order-> id, у вас есть модель вашего заказа?

Итак,

$order->load('user');

$order->cart = unserialize($order->cart);

Или вы хотите коллекцию, тогда ваш код будет работать так

$orders = Order::with('user')->get();

$orders->transform(function($order, $key) {
    $order->cart = unserialize($order->cart);

    return $order;
});
0 голосов
/ 28 мая 2020

Проблема не в unserialize, это даже не доходит. Проблема, похоже, связана с неопределенным методом, который вы пытаетесь использовать ($orders->transform).

Не могли бы вы указать код в вашем классе заказа? Вы определили там метод transform?

EDIT:

используя serialize, вы как бы «упускаете из виду суть реляционной базы данных и типы данных, присущие вашему движку базы данных. Это делает данные в вашей базе данных непереносимыми, трудными для чтения и могут усложнить запросы.

Кроме того, многие тесты доказывают, что json_encode быстрее, чем serialize.

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