2017-09-03 35 views
0

我想開發一個RESTful API與Laravel 5和我有一個表,如下Laravel外鍵留守或可填寫

Schema::create('reports', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->string('company_name'); 
    $table->string('direction'); 
    $table->integer('user_id')->unsigned(); 
    $table->timestamps(); 
}); 

領域user_id是一個外鍵,我想創建一個新的Report紀錄當通過Android App發送POST請求時。

我的問題是,user_id字段應該是什麼狀態?守衛或可填充?

任何幫助,將不勝感激

回答

0

,你應該將它設置爲可填寫的,因爲你要設置的模型創建該值。

欲瞭解更多詳細信息,請參閱文檔: https://laravel.com/docs/5.0/eloquent#mass-assignment

+0

我唯一擔心的是,使其可填寫可能會導致安全問題的過程。你對此有何看法? – Tartar

+0

如果你做一些像$ report = new Report(Input :: all());那麼可能會有問題。在這種情況下,保護屬性可能是正確的。這取決於你想如何創建和更新你的模型。 – wheeler

+0

本文可能有助於澄清http://hndr.me/blog/laravel-mass-assignment-protection-blacklist-vs-whitelist/ – wheeler

0

老實說,我會建議重新考慮這一戰略,然而,這裏的東西,你可以嘗試,如果你真的需要那樣做。

不要將user_id添加到$fillable$guarded。設置一個model observer並在那裏分配ID。

這樣,你可以安全通過調用報表模型,仍然能夠掛接到創建/閱讀報告/用戶