Rumah > rangka kerja php > ThinkPHP > thinkphp5 bagaimana untuk mengemas kini data yang tidak berubah kepada 0

thinkphp5 bagaimana untuk mengemas kini data yang tidak berubah kepada 0

王林
Lepaskan: 2023-06-02 10:47:08
ke hadapan
953 orang telah melayarinya

ThinkPHP 5 ialah rangka kerja PHP sumber terbuka yang boleh meningkatkan kecekapan pembangunan aplikasi web dengan ketara. Antaranya, operasi yang melibatkan pertanyaan data, sisipan, kemas kini, pemadaman dan operasi lain adalah salah satu bahagian yang paling kerap digunakan. Artikel ini akan meneroka cara mengemas kini data yang tidak perlu dikemas kini kepada 0 apabila menggunakan rangka kerja ThinkPHP 5.

Sangat mudah untuk menggunakan pemetaan hubungan objek ORM untuk memanipulasi data dalam ThinkPHP 5. Biasanya, kami menggunakan kaedah save() objek model untuk mengemas kini data. Apabila menggunakan kaedah save(), jika medan dalam borang belum diubah suai, nilai medan tidak akan dikemas kini.

Sebagai contoh, kami mempunyai jadual maklumat pengguna yang merangkumi butiran seperti ID pengguna, nama pengguna, kata laluan, jantina dan umur. Pengguna hanya mengubah suai kata laluan dan medan umur; tiada perubahan dibuat pada nama pengguna dan medan jantina. Kaedah save() tidak mengubah nilai nama pengguna dan medan jantina semasa melakukan operasi kemas kini. Tetapi jika kita ingin mengemas kini data yang tidak berubah kepada 0, bagaimana kita melakukannya?

Kita boleh mencapai fungsi ini dengan mengatasi kaedah save() objek model. Pelaksanaan khusus adalah seperti berikut:

1 Dalam kelas model, tentukan tatasusunan statik $zero_fields untuk menyimpan tatasusunan medan yang perlu dikemas kini kepada 0.

protected static $zero_fields = ['field1', 'field2', ...];
Salin selepas log masuk

2 Dalam kaedah save(), tentukan sama ada medan yang perlu dikemas kini kepada 0 sudah mempunyai nilai Jika tidak, kemas kini nilainya kepada 0, dan akhirnya panggil kaedah save(). kelas induk Kemas kini medan lain.

public function save(array $data = [], $where = [], $sequence = null)
{
    foreach (self::$zero_fields as $field) {
        if (!isset($data[$field])) {
            $data[$field] = 0;
        }
    }
    return parent::save($data, $where, $sequence);
}
Salin selepas log masuk

Dengan menulis semula kaedah save(), kami boleh memproses medan yang perlu dikemas kini mengikut cara yang disasarkan dan mengemas kini medan yang tidak berubah kepada 0, mengelakkan kesan data tidak lengkap yang diserahkan oleh borang pada pangkalan data .

Atas ialah kandungan terperinci thinkphp5 bagaimana untuk mengemas kini data yang tidak berubah kepada 0. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan