получить первое значение из базы данных столбцов массива - PullRequest
0 голосов
/ 07 февраля 2020

Мне нужно получить первый элемент в массиве из выбранной базы данных, используя l oop, но когда я не использую свой наряд, выведите все значения для массива

public function index() {
    $hall=DB::table('halls')
        ->join('imagas','halls.id','=','imagas.id_Halls')
        ->select('halls.id','halls.hall_name','imagas.image_path')
        ->get();

    $results =[];

    foreach ($hall as $halls ) {

        $array=$halls->image_path ;
        for ($i=0; $i<$array; $i++) { 
            $halls=$array[0];
        }
        array_push($results, $halls);
    }

    return response()->json($results);
}

JSON Вывод

[{"id": 159, "hall_name": "asdad", "image_path": "[\" 1579635948.jpg \ ", \" 1579635948.jpg \ " , \ "1579635948.png \", \ "1579635948.png \"] "}, {" id ": 160," hall_name ":" dsfdsf "," image_path ":" [\ "1579636069.jpg \", \ "1579636069.png \", \ "1579636069.png \", \ "1579636069.png \"] "},]

Я хочу отобразить первое значение из всех image_path вот так

[{

    "id": 160,
    "hall_name": "dsfdsf",
    "image_path": "["1579636069.jpg"]"
},
]

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Если я вас правильно понимаю, вам нужны данные всей коллекции, но с измененным столбцом image_path , поэтому он содержит только первый путь, верно?

Вот код, использующий вспомогательная функция карты для вывода коллекции по вашему желанию:

public function index() {
    $hall=DB::table('halls')
        ->join('imagas','halls.id','=','imagas.id_Halls')
        ->select('halls.id','halls.hall_name','imagas.image_path')
        ->get();

    $results = $hall->map(function ($item, $key) {
        is_array($item->image_path) ? [head($item->image_path)] : [$item->image_path];
        return $item;
    });

    return response()->json($results);

// [ { "id": 159, "hall_name": "asdad", "image_path": "["1579635948.jpg"]" }, 
//   { "id": 160, "hall_name": "dsfdsf", "image_path": "["1579636069.png"]" }]
}
0 голосов
/ 08 февраля 2020

Вы можете использовать decode вашу $hall->image_path строку перед тем, как l oop через нее

public function index() {
    $halls = DB::table('halls')
        ->join('imagas','halls.id','=','imagas.id_Halls')
        ->select('halls.id','halls.hall_name','imagas.image_path')
        ->get();

    $results =[];

    foreach ($halls as $hall) {

        $array = json_decode($hall->image_path, true);

        if (is_array($array)) {

           $hall->image_path = reset($array) ?? NULL;

           array_push($results, $hall);
        }
    }

    return response()->json($results);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...