Rumah  >  Artikel  >  rangka kerja php  >  ActiveDataProvider dalam rangka kerja Yii: Dapatkan data dengan mudah

ActiveDataProvider dalam rangka kerja Yii: Dapatkan data dengan mudah

PHPz
PHPzasal
2023-06-21 08:53:221657semak imbas

Dalam proses membangunkan aplikasi web, pengurusan data selalunya merupakan aspek penting. Rangka kerja Yii menyediakan banyak alatan pemprosesan data yang berkuasa untuk tujuan ini, salah satunya ialah ActiveDataProvider.

ActiveDataProvider ialah alat yang menanyakan model data, menyusun keputusan dalam format tertentu dan menyokong halaman dan pengisihan. Ia biasanya digunakan dalam aplikasi Yii untuk mendapatkan beberapa data dan membentangkannya kepada pengguna melalui grid atau senarai data.

Dalam bentuk yang paling mudah, ActiveDataProvider hanya memerlukan dua parameter: kelas model dan keadaan pertanyaan.

$dataProvider = new ActiveDataProvider([
    'query' => Post::find()->where(['status' => Post::STATUS_PUBLISHED]),
]);

Dalam contoh di atas, kami menanyakan semua artikel yang diterbitkan bagi model Post, dan hasilnya akan digunakan sebagai asas penyedia data.

Seperti yang anda lihat, melalui ActiveDataProvider, kami boleh mengatur data dengan mudah, dan pembekal data ini juga menyokong halaman dan pengisihan.

Berkenaan paging, kita boleh melakukan ini:

$dataProvider = new ActiveDataProvider([
    'query' => Post::find()->where(['status' => Post::STATUS_PUBLISHED]),
    'pagination' => [
        'pageSize' => 10,
    ],
]);

Kita boleh menetapkan jumlah data yang dipaparkan pada setiap halaman untuk membentangkan data dalam halaman Kod di atas akan halaman data kepada 10 item setiap muka surat.

Mengenai pengisihan, kita boleh melakukan ini:

$dataProvider = new ActiveDataProvider([
    'query' => Post::find()->where(['status' => Post::STATUS_PUBLISHED]),
    'sort' => [
        'defaultOrder' => [
            'created_at' => SORT_DESC,
        ],
    ],
]);

Kita boleh menetapkan keadaan isihan lalai, yang disusun dalam susunan terbalik mengikut tarikh keluaran.

Menggunakan ActiveDataProvider, anda boleh melaksanakan pelbagai fungsi pengurusan data dengan mudah tanpa menulis banyak kod tersuai.

Selain aplikasi asas yang dinyatakan di atas, terdapat beberapa fungsi lain yang tersedia. Sebagai contoh, kita boleh mentakrifkan fungsi tersuai untuk melaksanakan pemprosesan tambahan pada hasil pertanyaan:

$dataProvider = new ActiveDataProvider([
    'query' => Post::find()->where(['status' => Post::STATUS_PUBLISHED]),
    'pagination' => [
        'pageSize' => 10,
    ],
    'sort' => [
        'defaultOrder' => [
            'created_at' => SORT_DESC,
        ],
    ],
    'key' => 'id',
    'totalItemCount' => function($query) {
        return $query->count('DISTINCT post.id');
    },
]);

Dalam kod di atas, kami mentakrifkan tiga atribut tambahan: kunci, totalItemCount dan kumpulan. Atribut kunci mentakrifkan kunci utama model data dan lalai ialah 'id' atribut totalItemCount mentakrifkan jumlah bilangan semua data yang memenuhi syarat dalam model data, dan biasanya dikira menggunakan fungsi count(); atribut kumpulan mentakrifkan medan mana keputusan pertanyaan dikumpulkan oleh .

Dalam penggunaan sebenar, kami boleh menggabungkan dan menggunakan atribut ini mengikut keperluan dan menyusun data mengikut keperluan khusus.

Secara umum, ActiveDataProvider ialah alat yang sangat berguna dalam rangka kerja Yii. Ia membolehkan kami mendapatkan data dengan mudah dan seterusnya menguruskan data. Sama ada kami mendapat data daripada pangkalan data atau sumber data lain, ActiveDataProvider boleh memberikan kami fungsi berkuasa yang membolehkan kami mengakses, menapis, mengisih dan data halaman dengan mudah.

Atas ialah kandungan terperinci ActiveDataProvider dalam rangka kerja Yii: Dapatkan data dengan mudah. 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