首页 > 解决方案 > 无法访问php刀片中的数组内的对象

问题描述

数据库我正在执行查询并将 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"
  }
}

非常感谢!

标签: phplaravellaravel-blade

解决方案


您正在转换$preguntas(array)in (array)$preguntaswhich 不是对象,因此是错误。

你可以调用你的 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();

推荐阅读