Dalam Laravel, kita boleh menukar model kepada tatasusunan melalui kaedah toArray()
. Kaedah ini sangat mudah kerana kita sering perlu mengembalikan data model kepada klien atau menggunakannya dalam templat.
Walau bagaimanapun, dalam pembangunan sebenar, kita mungkin menghadapi beberapa situasi khas di mana kita perlu menyesuaikan format output tatasusunan. Mari perkenalkan cara menukar model kepada tatasusunan dalam Laravel, dan cara menyesuaikan format output tatasusunan. Kaedah
toArray()
ialah kaedah yang paling biasa digunakan dalam Laravel untuk menukar model kepada tatasusunan. Kaedah ini akan menukar atribut dan hubungan objek model kepada tatasusunan, yang sangat mudah untuk output kepada klien.
Berikut ialah contoh menggunakan kaedah toArray()
untuk menukar model kepada tatasusunan:
$user = User::find(1); $array = $user->toArray();
Dalam contoh ini, kami memperoleh objek pengguna melalui User::find(1)
dan kemudian gunakan kaedah toArray()
untuk menukarnya kepada tatasusunan.
Tatasusunan yang ditukar biasanya kelihatan seperti ini:
[ 'id' => 1, 'name' => '张三', 'email' => 'zhangsan@example.com', 'created_at' => '2021-01-01 00:00:00', 'updated_at' => '2021-01-01 00:00:00', 'articles' => [ [ 'id' => 1, 'title' => '文章标题', 'content' => '文章内容', 'created_at' => '2021-01-01 00:00:00', 'updated_at' => '2021-01-01 00:00:00', ], ... ], ]
Seperti yang anda lihat, tatasusunan yang ditukar mengandungi atribut utama dan hubungan yang berkaitan dengan model. Jika kita tidak memerlukan perhubungan yang berkaitan, kita perlu mentakrifkan atribut $hidden
dalam model:
class User extends Model { protected $hidden = ['articles']; }
Jika kita perlu menyesuaikan kaedah penukaran daripada objek model, kaedah toArray()
boleh dilaksanakan dalam model. Kaedah ini akan mengatasi kaedah penukaran lalai untuk mencapai kesan output tersuai.
Berikut ialah contoh kaedah toArray()
tersuai yang merombak sifat objek model dan hanya mengeluarkan sebahagian daripadanya:
class User extends Model { protected $hidden = ['articles']; public function toArray() { $array = parent::toArray(); $keys = array_keys($array); shuffle($keys); $newArray = []; foreach ($keys as $key) { if (in_array($key, ['id', 'name', 'email', 'created_at'])) { $newArray[$key] = $array[$key]; } } return $newArray; } }
Dalam contoh ini, kita mula-mula memanggil induk Kaedah toArray()
kelas memperoleh hasil penukaran lalai. Kemudian, kami menggunakan kaedah shuffle()
untuk mengocok kekunci dalam tatasusunan, dan akhirnya hanya beberapa atribut dikeluarkan.
Keluaran kaedah toArray()
tersuai ini mungkin kelihatan seperti ini:
[ 'name' => '张三', 'email' => 'zhangsan@example.com', 'id' => 1, 'created_at' => '2021-01-01 00:00:00', ]
Dalam sesetengah kes, kita perlu menghantar model Sesetengah sifat dikeluarkan dalam bentuk tertentu, seperti memformat tarikh ke dalam format tertentu atau menukar rentetan JSON kepada tatasusunan.
Dalam Laravel, anda boleh menggunakan atribut $casts
untuk tujuan ini. $casts
Atribut ialah tatasusunan, kuncinya ialah nama atribut model dan nilainya ialah format yang hendak ditukar.
Berikut ialah contoh menggunakan atribut $casts
untuk mengeluarkan atribut tarikh model sebagai cap waktu Unix:
class MyModel extends Model { protected $casts = [ 'created_at' => 'timestamp', 'updated_at' => 'timestamp', ]; }
Dalam contoh ini, kami menggabungkan created_at
dan updated_at
Jenis kedua-dua sifat ditetapkan kepada 'cap masa' supaya apabila menukar model kepada tatasusunan, nilai kedua-dua sifat ini akan ditukar kepada cap masa Unix.
Dalam artikel ini, kami memperkenalkan cara menukar model kepada tatasusunan dalam Laravel dan cara menyesuaikan format output tatasusunan. Selain kaedah toArray()
, anda juga boleh menggunakan kaedah toArray()
tersuai dan atribut $casts
untuk mencapai penukaran tatasusunan yang lebih fleksibel. Mahir dalam kaedah ini akan membolehkan kami mengendalikan transformasi model dengan lebih mudah semasa pembangunan.
Atas ialah kandungan terperinci Analisis ringkas tentang tiga kaedah menukar model kepada tatasusunan dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!