YII中的updateByPk中的参数是不是有点鸡肋?
这updateByPk有四个参数,其中第三个参数我感觉有点鸡肋。因为第三个参数是条件。那我主键只有一个,我干嘛还要整一个条件呢?也就是通过主键就能找到唯一的列,我还要条件干啥啊!
回复内容:
这updateByPk有四个参数,其中第三个参数我感觉有点鸡肋。因为第三个参数是条件。那我主键只有一个,我干嘛还要整一个条件呢?也就是通过主键就能找到唯一的列,我还要条件干啥啊!
不是。
首先,最后两个参数是可以省略的,对于简单的更新,这个方法调用很方便。
其次,如果更新还包含其它限制,那么后面的两个参数就派上用场了。一般情况下,用主键来唯一确定一条记录,这里把主键写在第一参数位置,可以突出主键,出错的概率更小。
比如用户要更新自己写的文章,那一般都是先靠主键定位到文章ID,再通过附加条件“uid=:uid”来确定是当前用户来防止其他用户提交恶意ID来做修改。(目前我只有这种应用场景用到第三个参数)
比如你要更新ID为3的帐号给他扣除10块钱
读余额,然后直接updateByPk
然后你就完蛋了,因为交易频率高的时候,不能保证你读到余额以后,没有别的进程写了另一个新的余额进去,连买2个却只扣了一次钱之类的问题就来了
这时候就需要加条件了,具体来说
<code>balance, version = readByPk pk balance -= 10 updateBypk pk, {balance:balance, version:version+1}, version=version </code>
通过“版本号”防止并发场景下数据错乱。好像行话叫乐观锁,可以去了解一下

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Log masuk CakePHP adalah tugas yang sangat mudah. Anda hanya perlu menggunakan satu fungsi. Anda boleh log ralat, pengecualian, aktiviti pengguna, tindakan yang diambil oleh pengguna, untuk sebarang proses latar belakang seperti cronjob. Mengelog data dalam CakePHP adalah mudah. Fungsi log() disediakan

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c
