【问题标题】:Laravel Foreign Key Guarded or FillableLaravel 外键受保护或可填充
【发布时间】:2017-09-03 18:57:21
【问题描述】:

我正在尝试使用 Laravel 5 开发一个 Restful API,我有一个如下表

Schema::create('reports', function (Blueprint $table) {
    $table->increments('id');
    $table->string('company_name');
    $table->string('direction');
    $table->integer('user_id')->unsigned();
    $table->timestamps();
});

user_id 字段是一个外键,我想在通过 Android 应用发出 POST 请求时创建一个新的Report 记录。

我的问题是,user_id 字段的状态应该是什么?受保护还是可填充?

任何帮助将不胜感激

【问题讨论】:

    标签: php laravel rest laravel-5


    【解决方案1】:

    您应该将其设置为可填充,因为您希望在创建模型时设置此值。

    有关更多详细信息,请参阅文档: https://laravel.com/docs/5.0/eloquent#mass-assignment

    【讨论】:

    • 我唯一担心的是,使其可填充可能会导致安全问题。你怎么看?
    • 如果你做类似的事情 $report = new Report(Input::all());那么可能会出现问题。在这种情况下,受保护的属性可能是正确的。这取决于您希望如何创建和更新模型。
    • 这篇文章可以帮助澄清hndr.me/blog/…
    【解决方案2】:

    老实说,我建议重新考虑该策略,但是,如果您确实需要这样做,可以尝试以下方法。

    不要将 user_id 添加到 $fillable$guarded。设置 model observer 并在此处分配 id。

    这样您就可以安全地将调用传递给报表模型,并且仍然能够挂接到创建/读取报表/用户的过程中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 2012-07-18
      相关资源
      最近更新 更多