Недопустимое смещение строки и попытка получить свойство не объекта (laravel 5.3)

63
4

Так что у меня проблема с печатью результата в лезвии, что данные находятся у контроллера, поэтому:

UseController.php:

     $expertCategory = Category::getCategoryByID($user_id);
$data = [ 'expertCategory' => $expertCategory ];
return view('cms.user.edit', $data);

Category.php (модели) getCategoryByID ($ user_id) возвращает массив результатов, если я dd (expertCategory); в контроллере, результатом которого является:

array:9 [▼
"id" => 1
"name" => "Beauty"
"sequence" => 1
"background_color" => "ffffff"
"status" => "Active"
"created_at" => "2017-06-19 09:41:38"
"updated_at" => "2017-06-19 09:41:38"
"icon_filename" => "beauty-icon"
"iconURL" => array:3 [▼
"small" => "http://localhost:8000/images/category_icons/small/beauty-icon"
"medium" => "http://localhost:8000/images/category_icons/medium/beauty-icon"
]
]

Но когда я хочу распечатать с помощью foreach результат в blade.php с кодом:

 @foreach($expertCategory as $expertCat)
{{ $expertCat->id }}
@endforeach

вернет ошибку "Попытка получить свойство не-объекта"

если я использую такой код:

@foreach($expertCategory as $expertCat) {{ $expertCat['id'] }} @endforeach

он вернется: "Недопустимое смещение строки id"

любой может помочь решить эту проблему: s? большое спасибо !

спросил(а) 2021-01-27T18:50:37+03:00 4 месяца, 3 недели назад
1
Решение
89

Поскольку $expertCategory - это dimensional array, перед которым стоит эта проблема

Просто замените это

$expertCategory = Category::getCategoryByID($user_id);
$data = [ 'expertCategory' => $expertCategory ];
return view('cms.user.edit', $data);

С

$expertCategory = Category::getCategoryByID($user_id);
$data = [ 'expertCategory' => [$expertCategory] ];
return view('cms.user.edit', $data);

Затем используйте

@foreach($expertCategory as $expertCat)
{{ $expertCat['id'] }}
@endforeach

В вашем клинке он будет работать на вас.

ответил(а) 2021-01-27T18:50:37+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема