Понимание разницы между Guard и Fillable в Laravel

При работе с фреймворком Laravel необходимо усвоить две важные концепции: «защита» и «заполняемость». И защита, и заполняемость играют решающую роль в определении и управлении доступом и манипулированием данными в моделях Laravel. В этой статье мы рассмотрим разницу между Guard и Fillable, обсудим варианты их использования и предоставим примеры кода, иллюстрирующие их реализацию.

Содержание:

  1. Понимание защиты
    1.1 Что такое защита?
    1.2 Определение защиты в Laravel
    1.3 Пример кода: реализация защиты

  2. Понимание Fillable
    2.1 Что такое Fillable?
    2.2 Определение Fillable в Laravel
    2.3 Пример кода: реализация Fillable

  3. Сравнение Guard и Fillable
    3.1 Контроль доступа
    3.2 Манипулирование данными
    3.3 Связь с Eloquent
    3.4 Выбор между Guard и Fillable

  4. Заключение

  1. Понимание защиты

1.1 Что такое охранники?
В Laravel охранники отвечают за аутентификацию пользователей и управление пользовательскими сеансами. Охранник определяет, как аутентифицируются пользователи и какой поставщик пользователей следует использовать. Laravel предоставляет несколько драйверов защиты, таких как сеанс, токен и API, каждый из которых имеет собственный механизм аутентификации.

1.2 Определение охранников в Laravel
Чтобы определить охранники в Laravel, вам необходимо настроить файл config/auth.php. По умолчанию Laravel использует «веб-защиту» для аутентификации веб-пользователей. Однако вы можете создать собственные средства защиты для обработки различных типов аутентификации, например аутентификации API.

1.3 Пример кода: реализация защиты
Вот пример определения пользовательской защиты с именем «api» в файле config/auth.php:

'guards' => [
    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],
  1. Понимание заполняемости

2.1 Что такое заполняемость?
В Eloquent ORM от Laravel свойство fillable определяет, какие атрибуты можно назначать массово. По умолчанию Eloquent предотвращает массовое назначение атрибутов по соображениям безопасности. Свойство fillable позволяет указать, какие атрибуты можно назначать в операции массового присвоения.

2.2 Определение заполняемых атрибутов в Laravel
Чтобы определить заполняемые атрибуты модели в Laravel, вам необходимо указать их в свойстве $fillableмодели. Только атрибуты, перечисленные в массиве $fillable, можно будет назначить посредством массового назначения.

2.3 Пример кода: реализация Fillable
Вот пример определения заполняемых атрибутов для модели User:

class User extends Model
{
    protected $fillable = ['name', 'email', 'password'];
}
  1. Сравнение защитного и заполняемого

3.1 Контроль доступа
Защитники в основном используются для аутентификации пользователей и управления сеансами, гарантируя, что соответствующие пользователи имеют доступ к защищенным ресурсам. С другой стороны, fillable используется для контроля того, какие атрибуты могут быть назначены массово, обеспечивая уровень защиты от непреднамеренных назначений.

3.2 Манипулирование данными
Защитники сосредоточены на аутентификации пользователей и обработке сеансов и не влияют напрямую на манипулирование данными внутри моделей. Fillable, с другой стороны, определяет, какие атрибуты могут быть назначены массово, что позволяет эффективно манипулировать данными с помощью таких методов, как create()или fill().

3.3 Отношения с Eloquent
Guards не имеют прямого отношения к моделям Eloquent. Они отвечают за аутентификацию пользователей, а модели Eloquent отвечают за взаимодействие с базой данных. С другой стороны, Fillable специально используется в моделях Eloquent для управления массовым назначением.

3.4 Выбор между защитным и заполняемым
Выбор между защитным и заполняемым зависит от конкретных требований вашего приложения. Если вам необходимо управлять аутентификацией пользователей и сеансами, защита необходима. Если вы хотите контролировать массовое назначение и обеспечивать целостность данных при работе с моделями Eloquent, подходящим выбором будет fillable.

  1. Заключение
    В Laravel защитные и заполняемые элементы служат разным целям при управлении аутентификацией пользователей и манипулировании данными в моделях Eloquent. Охранники сосредоточены на аутентификации пользователей и управлении сеансами, а заполняемые элементы контролируют, какие атрибуты могут быть назначены массово. Понимание разницы между защитным и заполняемым имеет решающее значение для создания безопасных и эффективных приложений Laravel.