在使用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