我有一個'用戶'表和'activation_tokens'表。我在用戶模型中與hasOne(ActivationToken :: class)有關係;Laravel mass-assignment插入新記錄create()的替代方法?
這一切工作正常。現在我想在創建用戶時創建一個令牌。所以我打電話
$user->ActivationToken()->create(array('token'=>'RANDOM_STRING"));
這是一切都好,但我打的質量分配錯誤。我不要想要設置'令牌'作爲可填寫。
相反,我嘗試
$activationToken = new ActivationToken();
$activationToken->token = 'RANDOM_STRING";
$activationToken->save();
這是確定,但它不設置查詢user_ID的領域。我想我可以手動設置$activationToken->user_id = $user->id;
但是這種感覺是錯誤的,因爲ORM應該自動處理這個,只要文檔看起來像廣告一樣。所以我覺得我做錯了什麼?
我想不出如何正確地做到這一點。任何提示?
謝謝!
如果你想去_ORM way_,那麼你需要在你的'可填充的'數組中設置令牌來進行批量分配。否則,您需要使用不首選的方法'$ activationToken-> user_id = $ user-> id'手動設置它。兩種方法你可以去。你爲什麼不想將字段設置爲「可填充」? – codedge
如果我必須將可填充的所有東西都設置爲可以使用ORM方式,那麼它是否會破壞可填充/防護的目的?除非整個質量分配是一個有缺陷的概念?無論如何,誰會將隨機http請求中的所有值分配給數據庫查詢。 :) 只需在參數user_id並插入令牌的ActivationToken類中創建一個函數就不會更簡潔嗎?然後我可以調用ActivationToken :: inserToken($ user-> id)並完成它。 –
@codedge請參閱我發佈的答案。似乎有一種方法可以使用批量分配來更新表格,而無需向可填寫的列添加列。 –