Cara Foreach Loop di Controller Laravel

whynwd

whynwd Kamis, 02 Desember 2021

Terkadang kita perlu menyesuaikan hasil kueri yang akan ditampilkan dari kueri database dengan melihat kebutuhan yang kita buat pada controller laravel.

Cara Foreach Loop di 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.

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel