Rumah >rangka kerja php >Laravel >Analisis ringkas tentang tiga kaedah menukar model kepada tatasusunan dalam laravel

Analisis ringkas tentang tiga kaedah menukar model kepada tatasusunan dalam laravel

PHPz
PHPzasal
2023-04-03 19:20:401628semak imbas

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

Gunakan kaedah toArray()

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'];
}

Kaedah Customized toArray()

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',
]

Gunakan atribut $casts

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.

Ringkasan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn