Laravel Eloquent Model仅传递某些参数

时间:2017-04-20 02:06:34

标签: php laravel model eloquent lumen

在我的Users型号上,它是否只接受某些列?

就像我在Users模型上传递用户名,电子邮件和密码一样,它会过滤为仅接受用户名和密码。

我试图填写protected $fillable = ['username','password'];,但似乎没有用。

1 个答案:

答案 0 :(得分:0)

这取决于数据库中用户模型的架构。 laravel附带的users表有一个迁移文件,如果你运行了php artisan migrate,它应该在数据库中。以下是Laravel附带的迁移文件的一部分(在数据库/迁移/中找到):

    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });

您可以看到默认情况下只能填充三列,如果需要,可以在此处添加更多列。虽然您需要在对迁移文件进行更改之前运行php artisan migrate:rollback,然后再次运行php artisan migrate。 (https://laravel.com/docs/5.4/migrations

受保护的$ fillable数组只选择可以批量分配的属性(https://laravel.com/docs/5.4/eloquent#mass-assignment),因此如果要使用这样的静态创建方法,则需要这些属性:

User::create(['name' => 'John Doe', 'email' => 'john@doe.com, 'password' => bcrypt('password')]);