В Laravel «заполняемый» метод играет решающую роль в обеспечении безопасного и контролируемого манипулирования данными в моделях вашего приложения. Это позволяет разработчикам определять белый список атрибутов, которые можно массово назначать с помощью Eloquent ORM. В этой статье блога будет подробно рассмотрен метод fillable, его использование и лучшие практики, а также приведены примеры кода.
- Основное использование:
Метод «заполняемый» обычно определяется внутри класса модели и принимает массив атрибутов, которые считаются «заполняемыми». Объявляя этот белый список, Laravel предотвращает непреднамеренное массовое присвоение атрибутов, которые не указаны явно.
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $fillable = ['name', 'email', 'password'];
}
- Защищенные атрибуты.
В качестве альтернативы свойство «guarded» можно использовать для указания атрибутов, которые невозможно заполнить. При использовании свойства «защищено» все атрибуты считаются массовыми, кроме перечисленных.
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $guarded = ['admin'];
}
- Настраиваемая защита.
Для более детального контроля над массовым назначением вы можете определить в своей модели собственные методы для управления защитой на основе конкретных условий. Эти методы должны возвращать массив атрибутов, которые следует охранять.
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function getGuardedAttributes()
{
if ($this->isAdmin()) {
return [];
}
return ['admin'];
}
}
- Заполнение атрибутов.
Чтобы массово назначить атрибуты модели, вы можете использовать методfill
. Этот метод принимает массив пар ключ-значение, представляющих атрибуты и их значения.
$user = new User;
$user->fill([
'name' => 'John Doe',
'email' => 'john@example.com',
'password' => bcrypt('secret'),
]);
$user->save();
- Безопасность массового назначения.
Используя «заполняемый» метод, вы гарантируете, что только указанные атрибуты могут быть массово назначены, обеспечивая дополнительный уровень безопасности от нежелательных манипуляций с данными.
$user = new User;
$user->fill([
'name' => 'John Doe',
'email' => 'john@example.com',
'is_admin' => true, // This attribute will be ignored
]);
$user->save();
Метод «fillable» в Laravel — это мощный инструмент для управления назначением атрибутов в ваших моделях. Явно указав белый список заполняемых атрибутов, вы можете повысить безопасность и предотвратить непреднамеренные уязвимости массового присвоения. Понимание и использование метода «заполняемости» необходимо для создания надежных и безопасных приложений Laravel.