2016-04-14 75 views
3

我有一個簡單的模型IsolatedQuery其中包括一個namequery字段。我已經在模型的$fillable屬性中定義了這兩個字段。該IsolatedQueryController @店看起來是這樣的:

public function store(IsolatedQueryRequest $request) 
{ 
    IsolatedQuery::insert($request->all()); 

    session()->flash('flash_message', 'Isolated Query succesvol opgeslagen'); 

    return redirect('iq'); 
} 

爲了完整起見,這裏是Model的源(這是我將其形容爲小)

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class IsolatedQuery extends Model 
{ 
    protected $fillable = [ 
     'name', 
     'query' 
    ]; 
} 

IsolatedQueryRequest只需要兩個namequery是充滿了任何價值。

當使用給定名稱和查詢值調用store方法時,出現錯誤:SQLSTATE[42S22]: Column not found: 1054 Unknown column '_token' in 'field list'

很明顯,一個_token字段獲取請求發送,但我有點困惑,爲什麼它試圖存儲它與實際的SQL查詢,因爲它沒有列在$fillable數組中。

爲什麼它得到質量分配?

+0

可能重複[Laravel 5.2 $ fillable](http://stackoverflow.com/questions/34864666/laravel-5-2-fillable) – bishop

+0

@bishop這不是重複的,這個問題問它爲什麼會發生,你鏈接到不回答。此外,這個問題是關於使用可填寫的proprty,另一個是關於不使用它。 –

+0

確實不是重複的。我想應用'$ request-> all()'應該可以,而不是調用'$ request-> only''。如果我想要的話,我不需要用'$ fillable'來定義批量賦值列表。 – Ben

回答

3

您使用查詢生成器的方法insert。它不檢查fillable
你應該使用createupdate雄辯的方法。
請閱讀documentation

此外,您可以將輸入數據傳遞到constructfill Eloquent的方法。之後,您可以使用save方法。

+0

多麼割...我已經完全看過它...謝謝! + 1A – Ben

+0

也可以使用['Eloquent :: fill()'](https://github.com/laravel/framework/tree/master/src/Illuminate/Database/Eloquent/Model.php#L428-L454)儘管IMO'create'和'update'更清楚地表達了這個意圖。 – bishop

+0

那麼當你有大量數據插入一次時你會做什麼?循環它並使用create方法效率不高 – wahdan