Terkadang kita perlu menyesuaikan hasil kueri yang akan ditampilkan dari kueri database dengan melihat kebutuhan yang kita buat pada controller laravel.
Hasil kueri yang kita lakukan akan menampilkan nilai kolom tabel database baik dalam bentuk objek, array, atau properti tunggal sesuai metode yang kita gunakan.
Contohnya penggunaan foreach untuk mengakses nilai setiap kolom dengan mengakses kolom sebagai properti objek:
foreach ($posts as $post) { echo $post->title; }
Hanya nilai kolom yang kita tetapkan yang akan ditampilkan pada respon permintaan yang kita buat.
Kueri Model Eloquent
Contoh penggunaan perulangan foreach saat berinteraksi dengan model eloquent dan mengubah elemen array untuk hasil kueri yang akan ditampilkan dapat kita buat seperti contoh dibawah ini.
//controller public function posts() { $posts = Post::all(); return response()->json($posts); }
//response [ { "id": 1, "user_id": 1, "title": "Title 1", "body": "body 1", "slug": "title-1", "published": 0, "created_at": "2021-12-02T03:55:31.000000Z", "updated_at": "2021-12-02T03:55:31.000000Z" }, { "id": 2, "user_id": 1, "title": "Title 2", "body": "body 2", "slug": "title-2", "published": 0, "created_at": "2021-12-02T03:55:39.000000Z", "updated_at": "2021-12-02T03:55:39.000000Z" } ]
Penggunaan foreach:
public function posts() { $posts = Post::all(); foreach ($posts as $post) { $res[] = [ 'id' => $post->id, 'title' => $post->title, 'body' => $post->body, 'created_at' => $post->created_at->format('d/m/Y'), 'updated_at' => $post->updated_at->format('d/m/Y'), ]; }; return response()->json($res); }
[ { "id": 1, "title": "Title 1", "body": "body 1", "created_at": "02/12/2021", "updated_at": "02/12/2021" }, { "id": 2, "title": "Title 2", "body": "body 2", "created_at": "02/12/2021", "updated_at": "02/12/2021" } ]
Contoh penggunaan dengan relasi:
public function singlePost($id) { $post = Post::find($id); $images = $post->images()->get(); $postObj = [ 'id' => $post->id, 'title' => $post->title, 'body' => $post->body ]; foreach ($images as $image) { $arrImages[] = [ 'id' => $image->id, 'url' => $image->url, ]; }; $res = array_merge($postObj, ['images' => $arrImages]); return response()->json(['post' => $res]); }
{ "post": { "id": 1, "title": "Title 1", "body": "body 1", "images": [ { "id": 1, "url": "1637818628-tes.png" }, { "id": 2, "url": "1637818593-tes.png" }, { "id": 3, "url": "1637818229-tes.png" }, { "id": 4, "url": "1637818229-tes.png" } ] } }
Hanya nilai kolom sesuai properti yang kita tetapkan yang akan ditampilkan pada respon permintan yang kita buat.
Demikian contoh sederhana penggunaan foreach di controller laravel pada kueri database. Silahkan dicoba.