不太能理解 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'];感觉并没有什么意义,很难理解这部分。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 7
ruodee

反正这个问题问的很好。简单点回答,$fillable只控制批量赋值允许填充的属性白名单,store()方法没有批量赋值,不受控制。


$fillable和$guarded两个属性是用来控制批量赋值的,批量赋值是什么意思?并不是数据填充,一次填充到数据库N条记录的概念,这里(在讲$fillable和$guarded)所谓的批量赋值仅是指在创建记录的时候传入的属性值。所谓的批量是相对于N个请求来说的批量。

这样理解,你就不会被批量二字迷惑了,这事其一,首先要看透批量二字

其二:$fillable或$guarded控制的是创建新记录,而且仅指使用Eloquent模型的create()方法创建新模型时候的控制。例如:
User::create(['name' =>$request->name,'sex'=>$request->sex]);

5年前 评论
ruodee

反正这个问题问的很好。简单点回答,$fillable只控制批量赋值允许填充的属性白名单,store()方法没有批量赋值,不受控制。


$fillable和$guarded两个属性是用来控制批量赋值的,批量赋值是什么意思?并不是数据填充,一次填充到数据库N条记录的概念,这里(在讲$fillable和$guarded)所谓的批量赋值仅是指在创建记录的时候传入的属性值。所谓的批量是相对于N个请求来说的批量。

这样理解,你就不会被批量二字迷惑了,这事其一,首先要看透批量二字

其二:$fillable或$guarded控制的是创建新记录,而且仅指使用Eloquent模型的create()方法创建新模型时候的控制。例如:
User::create(['name' =>$request->name,'sex'=>$request->sex]);

5年前 评论
ruodee

下面的没显示,超字数了吗

5年前 评论

@老好人 感谢回答 我再学习学习

5年前 评论

@老好人 不光是create,只要是调用了model->fill()就受到影响,5.5里有update($attributes),同时设置好几个字段值,里面就调用了fill

5年前 评论

create(), 以及save()的区别,
create()需要模型fillable
save()不经过fillable

4年前 评论

不好意思 我不太明白 能不能有更加简单易懂的解释呢? @ruodee

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!