Не удается получить доступ к объекту внутри массива в php блейде - PullRequest
0 голосов
/ 01 мая 2020

Database Я делаю запрос и возвращаю json клиенту Laravel, я пытаюсь получить доступ к каждой итерации с помощью foreach, но когда я пытаюсь получить доступ к информации в этом ошибка:

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

Я пробовал много методов, и я не знаю.

PHP FILE
public function indexJugetesDias(){
    $preguntas = $this::listarPreguntasHoy(1,10);




    return view('preguntasRespuestas')->with('preguntas', json_decode($preguntas, true));
}




public static function listarPreguntasHoy($pagina=1, $cantidad=10){


    if($cantidad<=0){
        $cantidad=10;
            }

            if($pagina<1){
                $pagina=1;
            }
        $pagina--;
$saltar = $pagina*10;


$preguntas = Question::select('questions.id', 'questions.id_user', DB::raw("DATE_FORMAT(questions.date, '%Y-%m-%d')"), 'questions.title', 'questions.description', 'users.id', 'users.first_name', 'users.last_name')
->join('users', 'users.id', 'questions.id_user')
->whereRaw("DATE(questions.date) = CURDATE()")
->get()
->skip($saltar)
->take($cantidad)
->toJson();


return $preguntas;


}
PHP BLADE FILE
   @foreach ((array)$preguntas   as  $pregunta)
                                {{$pregunta->id}}
                            <li class="thread"><span class="time">Apr 21</span><span class="title">aaa </span><span class="icon"> <a class="subscribe" href="javascript:void(0)"><i class="fa fa-star-o"></i></a><a class="flag" href="javascript:void(0)"><i class="fa fa-flag"></i></a></span></li>

                              @endforeach

HOW THE JSON LOOKS
array(1) {
  [0]=>
  object(stdClass)#359 (7) {
    ["id"]=>
    int(1)
    ["id_user"]=>
    int(1)
    ["DATE_FORMAT(questions.date, '%Y-%m-%d')"]=>
    string(10) "2020-05-01"
    ["title"]=>
    string(13) "Pregunta 1/05"
    ["description"]=>
    string(19) "Prueba Descripción"
    ["first_name"]=>
    string(6) "Pinazo"
    ["last_name"]=>
    string(4) "Guna"
  }
}

Большое спасибо!

1 Ответ

0 голосов
/ 01 мая 2020

Вы используете $preguntas как (array) в (array)$preguntas, который не является объектом, следовательно, ошибка.

Вы можете вызвать либо свой Blade:

{{ $pregunta['id'] }}

Или отправьте $preguntas как коллекцию с вашего контроллера, изменив код на:

$preguntas = Question::select('questions.id', 'questions.id_user', DB::raw("DATE_FORMAT(questions.date, '%Y-%m-%d')"), 'questions.title', 'questions.description', 'users.id', 'users.first_name', 'users.last_name')
    ->join('users', 'users.id', 'questions.id_user')
    ->whereRaw("DATE(questions.date) = CURDATE()")
    ->skip($saltar)
    ->take($cantidad)
    ->get();
...