Laravel 5 menggunakan kueri mentah untuk mendapatkan hasil ke array

Saya memiliki pertanyaan dari database saya di mana saya ingin membuat hasilnya menjadi array, saya menggunakan laravel tetapi saya tidak menggunakan Eloquent karena saya hanya seorang pemula. Ini pertanyaan saya.

Pertanyaan:

 $array = array();

        $shippings = DB::table('shipping_table')
        ->select('*')
        ->leftJoin('shipping_products', function ($join) use ($array) {
            $join->on('shipping_products.shipping_id','=','shipping_table.shipping_id');
        })
        ->leftJoin('products', function ($join) use ($array) {
            $join->on('products.product_id', '=', 'shipping_products.product_id');
        })->get();

        dd($shippings);

Ini hasil kueri saya adalah ini:

Collection {#296 ▼
  #items: array:2 [▼
    0 => {#297 ▼
      +"shipping_id": 56
      +"shipping_date": null
      +"total_amount": 95000
      +"shipping_receiver": "Robert"
      +"shipping_address": "test"
      +"mobile_number": "09992238185"
      +"user_id": 1
      +"shipping_status": 0
      +"paywith": "paypal"
      +"id": 9
      +"product_id": 1
      +"quantity": 15
      +"subcategory_id": 1
      +"featured_img": "sample image1.jpg"
      +"product_name": "Product 1"
      +"description": "Product 1 desc"
      +"price": 46000.0
      +"status": "published"
      +"created_at": "2017-10-04 05:29:59"
      +"updated_at": "2017-10-04 05:29:59"
    }
    1 => {#287 ▼
      +"shipping_id": 56
      +"shipping_date": null
      +"total_amount": 95000
      +"shipping_receiver": "Robert"
      +"shipping_address": "Test"
      +"mobile_number": "09992238185"
      +"user_id": 1
      +"shipping_status": 0
      +"paywith": "paypal"
      +"id": 10
      +"product_id": 2
      +"quantity": 10
      +"subcategory_id": 1
      +"featured_img": "DSC04477-e1490885078524-200x300.jpg"
      +"product_name": "Product 2"
      +"description": "Product 2 desc"
      +"price": 49000.0
      +"status": "published"
      +"created_at": "2017-10-04 05:58:55"
      +"updated_at": "2017-10-04 05:58:55"
    }
  ]
}

Dengan hasil yang saya dapatkan, saya kurang puas karena saya ingin hasil seperti ini:

Collection {#296 ▼
  #items: array:1 [▼
    0 => {#297 ▼
      +"shipping_id": 56
      +"shipping_date": null
      +"total_amount": 95000
      +"shipping_receiver": "test"
      +"shipping_address": "tester"
      +"mobile_number": "09992238185"
      +"user_id": 1
      +"shipping_status": 0
      +"paywith": "paypal"
       #products: array:2 {
         0 => {
          +"product_id": 1
          +"quantity": 15
          +"subcategory_id": 1
          +"featured_img": "sample.jpg"
          +"product_name": "Product 1"
          +"description": "Product desc 1"
          +"price": 46000.0
          +"status": "published"
          +"created_at": "2017-10-04 05:29:59"
          +"updated_at": "2017-10-04 05:29:59" 
        }
        1 => {
          +"product_id": 2
          +"quantity": 10
          +"subcategory_id": 1
          +"featured_img": "DSC04477-e1490885078524-200x300.jpg"
          +"product_name": "Product 2"
          +"description": "Product Desc 2"
          +"price": 46000.0
          +"status": "published"
          +"created_at": "2017-10-04 05:29:59"
          +"updated_at": "2017-10-04 05:29:59" 
        }
    }

bagaimana aku bisa mencapai ini? tolong bantu saya membangun dengan kueri yang benar. Saya ingin menjadikan produk sebagai sub array

Inilah struktur tabel saya:

Tabel pengiriman:

Ship_ID (INT AUTO INC)
AMOUNT (DOUBLE,2)
NAME (VARCHAR)
SHIP_DATE (DATE)
RECEIVER (VARCHAR)

Pengiriman_produk:

ID (INT AUTO INC)
Ship_id (foreign key from shipping table)
Product_id

Produk_tabel:

Product_id (Auto Inc)
name(varchar)
Qty(int)
Description (varchar)

person Jc John    schedule 04.10.2017    source sumber
comment
Anda memerlukan lebih dari satu permintaan untuk itu   -  person Gaurav Gupta    schedule 04.10.2017
comment
@GauravGupta terima kasih atas balasan Anda, Pak. Bisakah Anda memberi saya beberapa tautan sebagai contoh untuk melakukan itu?   -  person Jc John    schedule 04.10.2017
comment
membutuhkan struktur tabel Anda untuk itu   -  person Gaurav Gupta    schedule 04.10.2017
comment
@GauravGupta oke pak saya akan memposting tabel struktur ringkasan dengannya   -  person Jc John    schedule 04.10.2017
comment
@JcJohn Coba tambahkan toArray() di akhir setelah ->get().   -  person Ketan Solanki    schedule 04.10.2017
comment
@KetanSolanki memberi saya hasil di atas. bukan hasil yang ingin saya capai   -  person Jc John    schedule 04.10.2017


Jawaban (3)


Anda dapat menggunakan foreach() untuk jenis hasil ini, berikut beberapa kode untuk bantuan

$package_data = DB::table('packages_type')->where('flag','0')->select('id','name')->get();
                foreach ($package_data as $key => $value) {
                $package_data[$key]->package_det =  DB::table('plans')->where('p_type_id',$value->id)
                                    ->leftJoin('packages_time', 'plans.p_time_id', '=', 'packages_time.id')
                                    ->select('plans.amount','packages_time.name as time_name')
                                    ->get();
 }

berikut tanggapannya link semoga dapat membantu anda

person Gaurav Gupta    schedule 04.10.2017
comment
halo pak, bisakah Anda membantu saya dengan itu? Saya mendapat kesalahan Parse error: kesalahan sintaksis, '(', pengidentifikasi yang diharapkan (T_STRING) atau variabel (T_VARIABLE) atau '{' atau '$' yang tidak terduga - person Jc John; 04.10.2017
comment
Berikut kodenya:$shippings = DB::table('shipping_table') -›select('*') -›where(['shipping_table.shipping_status' =› $pending]) -›get(); foreach ($pengiriman sebagai $key =› $value) { $shippings[$key]-›products=DB::table('shipping_products')-›('products.featured_img','products.product_name', 'products. price','shipping_products.quantity') -›join('products', 'shipping_products.product_id', '=', 'products.product_id') -›where(['shipping_products.shipping_id', '=', $key ]) ->mendapatkan(); } dd($pengiriman); - person Jc John; 04.10.2017
comment
Anda lupa satu kali bergabung dalam pemeriksaan loop foreach di dekat ini -›‌​('products.featured_‌​img','products.produ‌​ct_name', 'products.price','shi - person Gaurav Gupta; 04.10.2017
comment
kapan saja dengan senang hati membantu :) - person Gaurav Gupta; 04.10.2017
comment
bisakah Anda membantu saya menambahkan-›paginate(8) - person Jc John; 04.10.2017
comment
$batas = 10; $offset = ($data['halaman'] - 1) * $batas; dan masukkan ini ke dalam kueri -›offset($offset) -›limit($limit) - person Gaurav Gupta; 04.10.2017
comment
Mari kita melanjutkan diskusi ini dalam chat. - person Gaurav Gupta; 04.10.2017

jawaban bahwa Anda tidak dapat melakukannya dalam 1 permintaan. Anda dapat melakukannya dalam dua pertanyaan. tetapi jawaban terbaik bagi Anda adalah mulai menggunakan Eloqent dan itu menjadi sangat sederhana

$shipping = Shipping::with('productShipping')->get();

mySQL selalu mengembalikan satu tabel dalam satu kueri Anda tidak dapat membuat objek kompleks dalam satu kueri

person Nevo    schedule 04.10.2017
comment
saya tidak menggunakan fasih pak. tolong jawab aku dengan pertanyaanku - person Jc John; 04.10.2017

Anda dapat menggunakannya dengan cara ini:

   $shippings = DB::table('shipping_table')
            ->select('*')
            ->leftJoin('shipping_products', function ($join) use ($array) {
                $join->on('shipping_products.shipping_id','=','shipping_table.shipping_id');
            })
            ->leftJoin('products', function ($join) use ($array) {
                $join->on('products.product_id', '=', 'shipping_products.product_id');
            })->get()->all();
person Moeen Basra    schedule 04.10.2017
comment
Panggilan ke metode yang tidak ditentukan Illuminate\Database\Query\Builder::lists() - person Jc John; 04.10.2017
comment
terima kasih atas balasan cepatnya, Pak. saya akan mencobanya segera - person Jc John; 04.10.2017
comment
Argumen 1 tidak ada untuk Illuminate\Database\Query\Builder::pluck() - person Jc John; 04.10.2017
comment
Saya baru saja membaca dokumen jika Anda perlu mengaitkan semua model pengguna dalam format array maka Anda dapat menggunakan ->get()->all() sedangkan jika Anda hanya perlu mengambil atribut yang dipilih maka Anda dapat melakukannya dengan cara ini. ->pluck($attributes)->all() Metode pemetikan membutuhkan string yang dipisahkan koma. - person Moeen Basra; 04.10.2017
comment
maaf untuk mengatakannya!. itu tidak menyelesaikan pertanyaan saya. Ketika saya mencobanya Pak, hasilnya sama dengan yang saya posting di atas, bukan kueri yang ingin saya capai di bagian bawah posting saya. silakan periksa posting saya - person Jc John; 04.10.2017
comment
Anda memerlukan koleksi untuk tabel dasar dan array untuk relasi? - person Moeen Basra; 04.10.2017
comment
Jawaban yang saya posting akan memberi Anda semua dalam format array. Saya mengujinya sendiri - person Moeen Basra; 04.10.2017
comment
Mari kita melanjutkan diskusi ini dalam chat. - person Moeen Basra; 04.10.2017