Katakanlah kita menggunakan pembuat permintaan Laravel:
$users = DB::table('really_long_table_name')
->select('really_long_table_name.id')
->get();
Saya mencari yang setara dengan SQL ini:
really_long_table_name AS short_name
Ini akan sangat membantu ketika saya harus mengetik banyak pilihan dan wheres (atau biasanya saya menyertakan alias di kolom alias pilih juga, dan itu sudah digunakan dalam array hasil). Tanpa alias tabel apa pun, ada lebih banyak pengetikan untuk saya dan semuanya menjadi jauh lebih mudah dibaca. Tidak dapat menemukan jawabannya di dokumen laravel, ada ide?
protected $table = "books";
) lalu bagaimana saya bisa membuat alias? (misalnya dihasilkan sql:... FROM books AS A ...
)protected $table = 'really_long_table_name AS short_name';
tetapi itu gagal pada INSERT. Juga dapat memecah kueri hubungan. Saya menggunakan Lumen dan pola DDD / Repositori untuk menghindari Eloquent sepenuhnya.Untuk menggunakan alias pada model yang fasih, modifikasi kode Anda seperti ini:
Ini secara otomatis akan menambahkan awalan tabel ke nama tabel dan mengembalikan instance
Items
model. bukan hasil kueri kosong. MenambahkanDB::raw
mencegah laravel dari menambahkan awalan tabel ke alias.sumber
Unknown column 'table_alias.deleted_at'
->withTrashed()
dan->whereNull('table_alias.deleted_at')
Inilah cara seseorang dapat melakukannya. Saya akan memberikan contoh dengan bergabung sehingga menjadi sangat jelas bagi seseorang.
Semoga ini membantu.
sumber
Untuk digunakan dalam Eloquent. Tambahkan di atas model Anda
protected $table = 'table_name as alias'
..kemudian gunakan dalam permintaan Anda seperti
ModelName::query()->select(alias.id, alias.name)
sumber
Anda dapat menggunakan lebih sedikit kode, menulis ini:
Dan tentu saja jika Anda ingin memilih lebih banyak bidang, cukup tulis "," dan tambahkan lagi:
Ini sangat praktis ketika Anda menggunakan permintaan yang tergabung kompleks
sumber
Sama seperti jawaban AMIB, untuk kesalahan hapus lunak "Kolom tidak dikenal 'table_alias.deleted_at'", tambahkan saja
->withTrashed()
lalu tangani sendiri seperti->whereRaw('items_alias.deleted_at IS NULL')
sumber