2016-04-14 78 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