массив foreach с массивом внутри в блейде laravel - PullRequest
0 голосов
/ 09 апреля 2020

Я уверен, что это легко, но я не могу понять это!


array(2) {
  [0]=>
  object(stdClass)#354 (7) {
    ["id"]=>
    int(1)
    ["id_user"]=>
    int(1)
    ["DATE_FORMAT(questions.date, '%Y-%m-%d')"]=>
    string(10) "2020-04-09"
    ["title"]=>
    string(16) "Prueba del dia 9"
    ["description"]=>
    string(28) "Prueba del dia 9 descripcion"
    ["first_name"]=>
    string(6) "Pinazo"
    ["last_name"]=>
    string(4) "Guna"
  }
  [1]=>
  object(stdClass)#351 (7) {
    ["id"]=>
    int(1)
    ["id_user"]=>
    int(1)
    ["DATE_FORMAT(questions.date, '%Y-%m-%d')"]=>
    string(10) "2020-04-09"
    ["title"]=>
    string(17) "Prueba del dia 92"
    ["description"]=>
    string(29) "Prueba del dia 92 descripcion"
    ["first_name"]=>
    string(6) "Pinazo"
    ["last_name"]=>
    string(4) "Guna"
  }
}

Я хочу сделать foreach и получить все значения от каждого объекта.

 @foreach($preguntas as $pregunta)
nvalid argument supplied for foreach()

Я делаю это, и это не работает.

Это код в php

$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 view('preguntasRespuestas')->with('preguntas', json_decode($preguntas));



Спасибо за ваше время! Я возвращаю preguntas в представление preguntasRespuestas

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Хорошо, допустим, это так:

$first = '{"id":1,"title":"Prueba del dia 1","description":"Prueba del dia 1 descripcion"}';
$second = '{"id":2,"title":"Prueba del dia 2","description":"Prueba del dia 2 descripcion"}';

Итак, $ perguntas будет выглядеть так:

$perguntas = 
[
    json_decode($first),
    json_decode($second)
];

И foreach:

foreach($perguntas as $perg) {
print_r($perg->id);
echo "<br>";
print_r($perg->title);
echo "<br>";
print_r($perg->description);
echo "<br>";
echo "<br>";
}

Результат:

1
Prueba del dia 1
Prueba del dia 1 descripcion

2
Prueba del dia 2
Prueba del dia 2 descripcion

Кроме того, с помощью вашего запроса вы возвращаете объект, а не массив, так что либо вы впоследствии преобразуете его в массив (array)$perguntas, либо:

$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 view('preguntasRespuestas')->with('preguntas', json_decode($preguntas, true));
0 голосов
/ 09 апреля 2020

может попробовать это? вам не нужно делать json и декодировать json, laravel делает это за вас.

$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)
->all();

    return view('preguntasRespuestas')->with('preguntas', $preguntas);
...