php - 显式定义 $guarded= ['id' ] 以防止意外插入?

标签 php laravel laravel-5 eloquent laravel-5.1

假设我想将以下逻辑应用于我的所有 Model 类:

All Model class with auto incremental id should have protected $guarded = ['id']



这样我就不会自己不小心插入增量 ID。

在 Laravel 5 中有意义吗?
除了设置protected $guarded = ['id']之外,我还有其他方法可以实现吗?在每个模型类中?

最佳答案

如果您遵循已接受的答案,您可以 仍然手动设置 id ,实际上,我实际上会说这个答案会使您的应用程序的安全性变得更糟。

Laravel 已经默认保护所有内容:
protected $guarded = ['*'];
因此,无需指定 id当它是已经守卫。当您覆盖该属性时,您是在告诉 Laravel,“实际上,不要保护一切。只保护我指定的属性。”因此,本质上,您正在解除对其他属性的保护。

此外,如果您要手动分配这样的属性:

$model = new Model;
$model->id = 1;
$model->name = 'Example';
$model->save();
$guarded/$fillable属性永远不会起作用。当您使用 create 之类的方法时,它们就会起作用。 , update , fill , 等等。

关于php - 显式定义 $guarded= ['id' ] 以防止意外插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31917075/

相关文章:

php - Lumen 确实发送了 204 响应

php - 验证失败后输入中的 Laravel 重置值?

php - 使用php在while循环中分页

Laravel 中间件返回 user_id 的数据

php - 表单提交后从MYSQL中携带行值

php - CommentController.php 第 43 行中的 Laravel 5.1 ErrorException : Undefined index: body

php - 如何部署 React/Laravel 项目?

php - Laravel Eloquent 创建于

php - PHP preg_replace 中的\w 仅覆盖 UTF-8 字符的第二个字节

php - 单选按钮多选