当我尝试将新记录插入到我的数据库中时,我收到了一个非常无用的错误。有谁知道从哪里开始解决这个错误?
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');
}
}
试图摆脱模型中的所有关系和验证。那没用。
答案 0 :(得分:4)
这在Laravel中称为质量赋值,要使其在模型上工作,您需要做的是将名为$guarded
的受保护数组设置为空。将其添加到您的模型中。
protected $guarded = array();
此数组的作用是,它可以防止使用数组批量分配属性,如果您不希望使用Model::create()
方法填充属性,则需要指定该属性在$guarded
数组中。
如果您只想指定可填充属性,Laravel的Eloquent还提供了一个名为$fillable
的数组,您只需指定要通过质量分配方式填充的属性。
进一步阅读: