Laravel Eloquent使用创建保存到数据库 - 无用的错误

时间:2014-03-11 22:36:24

标签: php laravel eloquent

当我尝试将新记录插入到我的数据库中时,我收到了一个非常无用的错误。有谁知道从哪里开始解决这个错误?

user_id

就是这样。 (这是我正在保存的表中所需字段之一的名称,但它不是很具描述性。)

这里的参考是我的代码:

$data = array(
    'user_id'=>1,
    'post_type'=>'0',
    'post_title'=>'blah',
    'description'=>'blah');

//it fails on this line
$id = Post::create($data);

这是我的模型的样子:

class Post extends Eloquent{
    public static $rules = array(
        'user_id'=>'required',
        'post_type'=>'required',
        'post_title' => 'required|max:25',
        'description'=>'required'
    );

    public static function validate($data){
        return Validator::make($data, static::$rules);
    }

    public function user(){
        return $this->hasOne('User', 'id', 'user_id');
    }
}

试图摆脱模型中的所有关系和验证。那没用。

1 个答案:

答案 0 :(得分:4)

这在Laravel中称为质量赋值,要使其在模型上工作,您需要做的是将名为$guarded的受保护数组设置为空。将其添加到您的模型中。

protected $guarded = array();

此数组的作用是,它可以防止使用数组批量分配属性,如果您不希望使用Model::create()方法填充属性,则需要指定该属性在$guarded数组中。

如果您只想指定可填充属性,Laravel的Eloquent还提供了一个名为$fillable的数组,您只需指定要通过质量分配方式填充的属性。

进一步阅读:

批量作业: http://laravel.com/docs/eloquent#mass-assignment

创建方法: http://laravel.com/docs/eloquent#insert-update-delete