Сортировка коллекции Laravel. Незаконное смещение строки 'деталь' - PullRequest
0 голосов
/ 15 декабря 2018

Мне нужно название детали сортировки "ASC"

Я перехожу по этой ссылке. https://laravel.com/docs/5.4/collections#method-sortby

enter image description here

это мои отладочные данные

enter image description here

Это мой код

$collection = collect($data);
dd($collection);
$sorted = $collection->sortBy(function ($product, $key) {
    return count($product['detail']);
});

$sorted->values()->all();

Но отображается ошибка "Недопустимое смещение строки 'detail'"

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Попробуйте это ..

$collection = collect($data);
$sorted = $collection->sortBy(function ($product, $key) {
    return $product['name'];
});

$sorted->values()->all();
0 голосов
/ 15 декабря 2018

В следующий раз, пожалуйста, отправьте код / ​​дд результаты в виде текста, а не скриншоты.Спасибо!

Здесь:

$collection = collect($data);

ваш $data - это не массив товаров, а 1 товар (предположительно, массив атрибутов товара).

Так что происходит, когда ->sortBy(..) перебирает атрибуты name и detail.

Итак, на первой итерации (вы можете увидеть, что, выполнив dd($product) в sortBy), $product на самом деле это:

'Tour Guide Multilingual'

и ключ:

'product'

И вы получаете ошибку, потому что пытаетесь получить доступ к индексу ['detail'] в строке (таким образом, "Illegal string offset 'detail' ")

Так что это логическая проблема.Я не уверен, как вы получите $data или каков ваш ожидаемый результат, но у вас есть только 1 продукт в вашем $data, так что на самом деле

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