不太能理解 fillable 的作用?
class Reply extends Model
{
protected $fillable = ['content'];
}
class RepliesController extends Controller
{
public function store(ReplyRequest $request, Reply $reply)
{
$reply->content = $request->content;
$reply->user_id = Auth::id();
$reply->topic_id = $request->topic_id;
$reply->save();
return redirect()->to($reply->topic->link())->with('success', '创建成功!');
}
}
Reply Model 这里的代码标识只有字段content
可以有用户来从前台传入修改数据库,而 RepliesController 这里实际上topic_id
也是由用户从前台传来的,这样似乎$fillable = ['content'];
感觉并没有什么意义,很难理解这部分。
高认可度评论:
反正这个问题问的很好。简单点回答,$fillable只控制批量赋值允许填充的属性白名单,store()方法没有批量赋值,不受控制。
$fillable和$guarded两个属性是用来控制批量赋值的,批量赋值是什么意思?并不是数据填充,一次填充到数据库N条记录的概念,这里(在讲$fillable和$guarded)所谓的批量赋值仅是指在创建记录的时候传入的属性值。所谓的批量是相对于N个请求来说的批量。
这样理解,你就不会被批量二字迷惑了,这事其一,首先要看透批量二字
其二:$fillable或$guarded控制的是创建新记录,而且仅指使用Eloquent模型的create()方法创建新模型时候的控制。例如:
User::create(['name' =>$request->name,'sex'=>$request->sex]);
反正这个问题问的很好。简单点回答,$fillable只控制批量赋值允许填充的属性白名单,store()方法没有批量赋值,不受控制。
$fillable和$guarded两个属性是用来控制批量赋值的,批量赋值是什么意思?并不是数据填充,一次填充到数据库N条记录的概念,这里(在讲$fillable和$guarded)所谓的批量赋值仅是指在创建记录的时候传入的属性值。所谓的批量是相对于N个请求来说的批量。
这样理解,你就不会被批量二字迷惑了,这事其一,首先要看透批量二字
其二:$fillable或$guarded控制的是创建新记录,而且仅指使用Eloquent模型的create()方法创建新模型时候的控制。例如:
User::create(['name' =>$request->name,'sex'=>$request->sex]);
下面的没显示,超字数了吗
@老好人 感谢回答 我再学习学习
@老好人 不光是create,只要是调用了model->fill()就受到影响,5.5里有update($attributes),同时设置好几个字段值,里面就调用了fill
@nkjackzhang
create(), 以及save()的区别,
create()需要模型fillable
save()不经过fillable
不好意思 我不太明白 能不能有更加简单易懂的解释呢? @ruodee