Изучение защищенных атрибутов и методов модели Laravel

Термин «защищенная модель Laravel» относится к функции среды Laravel, которая позволяет вам указать, какие атрибуты модели не подлежат массовому назначению. Если модель защищена, попытки массового присвоения значений защищенным атрибутам будут игнорироваться.

Вот несколько методов, связанных с защищенными атрибутами в моделях Laravel, а также примеры кода:

  1. Свойство guarded. Вы можете определить защищенные атрибуты непосредственно в модели, установив свойство guardedкак массив имен атрибутов. Например:
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    protected $guarded = ['id', 'created_at', 'updated_at'];
}

В этом примере атрибуты id, create_atи updated_atзащищены и не могут быть назначены массово.

  1. Свойство fillable. Альтернативно вы можете использовать свойство fillableдля указания атрибутов, которые можно массово назначать, вместо указания защищенных атрибутов. Например:
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
    protected $fillable = ['name', 'email', 'password'];
}

В этом случае массово могут быть назначены только атрибуты name, emailи password.

  1. Метод unguard: если вы хотите временно отключить защиту защищенных атрибутов, вы можете использовать метод unguard. Это позволяет массово назначать все атрибуты. Например:
$user = new User;
$user->unguard();
$user->fill([
    'name' => 'John Doe',
    'email' => 'johndoe@example.com',
    'password' => bcrypt('secretpassword'),
]);
$user->save();

В этом примере метод unguardвызывается для временного отключения защиты защищенных атрибутов, позволяя назначать все атрибуты с помощью метода fill.