Eloquent:如何在使用 create() 方法时为受保护的列赋值

laravel

1个回答

写回答

没啥意思

2025-07-09 16:05

+ 关注

php
php

如何在使用 create() 方法时为受保护的列赋值?

在使用 Eloquent 进行数据库操作时,有时会遇到需要为受保护的列赋值的情况。默认情况下,Eloquent 的 create() 方法只会填充可填充的列,而受保护的列不会被填充。但是,我们可以通过一些方法来绕过这个限制,为受保护的列赋值。

使用 fill() 方法

一个常见的方法是使用 fill() 方法来为受保护的列赋值。fill() 方法可以用于为模型对象的属性赋值,包括受保护的列。然后,我们可以使用 create() 方法来将模型对象保存到数据库中。

下面是一个示例代码:

php

use App\Models\User;

$user = new User;

$user->name = 'John Doe';

$user->emAIl = 'john@example.com';

$user->fill(['password' => bcrypt('password')]);

$user->save();

在上面的代码中,我们首先创建了一个 User 模型对象,并为其可填充的列 name 和 emAIl 分别赋值。然后,我们使用 fill() 方法为受保护的列 password 赋值,并使用 bcrypt() 函数对密码进行加密。最后,我们调用 save() 方法将模型对象保存到数据库中。

使用 create() 方法的 with() 方法

另一个方法是使用 create() 方法的 with() 方法。with() 方法可以接受一个数组作为参数,数组中的键值对表示要填充的属性和值。这样,我们可以通过 with() 方法来为受保护的列赋值。

下面是一个示例代码:

php

use App\Models\User;

$data = [

'name' => 'John Doe',

'emAIl' => 'john@example.com',

'password' => bcrypt('password'),

];

User::create()->with($data);

在上面的代码中,我们首先创建一个包含要赋值的属性和值的数组 $data。然后,我们使用 create() 方法创建一个 User 模型对象,并通过 with() 方法将 $data 数组传递给 create() 方法。这样,我们就可以为受保护的列 password 赋值,并将模型对象保存到数据库中。

在使用 Eloquent 的 create() 方法时,如果需要为受保护的列赋值,我们可以使用 fill() 方法或 create() 方法的 with() 方法来实现。这些方法允许我们绕过默认的限制,为受保护的列赋值,并将模型对象保存到数据库中。

无论是使用 fill() 方法还是 with() 方法,都需要注意保护好数据的安全性。在为受保护的列赋值时,应该遵循安全的编码实践,对敏感数据进行适当的加密和验证,以确保数据的安全性。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号