所以我遇到了一個正在發生的奇怪的錯誤,但只有一些時間。我似乎無法確定導致它發生的任何事情。基本上,我有一個ActiveRecord,它與我的數據庫中的表格相對應。我將值賦給一個對象並且調用save()
。ActiveRecord保存後設置的ID不正確
可以說我有下面的代碼:
$student = new Student();
$student->name = "Gregg";
$student->surname = "Smith";
$student->gender = "Male";
$student->save();
然後我Student
的活動記錄模式,我有以下幾點:
public function afterSave()
{
$this->assignStudent($this->id);
}
$this->id
不保存後正確的ID。我可以看到日誌中的ID是1416253
,而該記錄的DB中的ID是670336
。這種情況怎麼會發生?
UPDATE 我做了一些更多的調查,似乎$這個 - > ID被分配最後插入ID後回做插入分配。除了它沒有返回save()
插入的ID,而是返回先前已經完成的插入(插入的問題在log
表中)。這意味着根據系統,插入到學生表中是不正確的(即使它是,因爲我可以在DB中看到記錄)。
好的後期更新。那麼'$ student-save()'返回的是什麼? (應該是'true'或'false')。保存後你有沒有試過'$ student-> refresh()'? – Mat
@Mat'refresh'不起作用,因爲它基本上只是使用ID進行選擇,這是不正確的。 – SynackSA