yii框中findOne()的用法


在使用findOne($a)的時候會出現

          Call to a member function update() on array這樣的錯誤。

但是明明$a的值等於某一值,在數據庫中可以查到卻依然報錯。

奇怪的是有時候當$a為其他值的時候又不報錯,這是什么原因呢?

原來在yii的內部,當使用findOne()的時候不管括號里面是什么變量,這個$a的值都將賦值給數據庫中的主鍵(id)然后進行查詢。

比如:如果你的主鍵是id, 你想查詢的代碼是 $a=1;  $b  =  A::findOne($a);  

其實進行的查詢是$b  =  A::find()->Where ( [ ' id ' => " $a " ] )->one();。

所以這個時候當$a的值如果恰好等於主鍵的值的時候不報錯,如果不等於的話可能報錯,也可能查詢出來的值不是你期望得到的值

所以當 $a 不是主鍵時不要使用findOne


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM