@Programmir

Fillable laravel?

не очень понятно, что относить к fillable(guarded). например, куда относить password, remember_token, имя картинки?
имя картинки не меняется, пароль и токен может меняться, но токен не задается из вне. на что смотреть?
  • Вопрос задан
  • 7065 просмотров
Пригласить эксперта
Ответы на вопрос 3
Alex_Wells
@Alex_Wells
PHP/Kotlin
Эти фишки Ларавеля нужны только для очень простых rest проектов. В реальной жизни они не то что не нужны, а даже мешают, так-как create часто вызывается из разных мест и с разными параметрами. Лучше создать BaseModel, поставить $guarded = false и не париться на счет $fillable и $guarded. Так что тут либо использовать validor + $request->only, либо чуть модифицированный Request, и от него уже все остальные наследовать. А в нем метод по типу "$request->neededFields()" который отдает только нужные поля, основываясь на array_keys($validationArray)

Надеюсь понятно. В двух словах: не используй эту хренотень.
Ответ написан
@dvomaks
$fillable и $guarded в модели отвечают за разный функционал. Сам не гуру но из практики знаю что первая переменная указывает на поля которые необходимы для создания записи в базу через ModelName::create();
Другими словами это набор столбоцов у которых нет значения по умолчанию.

$guarded - здесь перечисляются поля которые не следует светить в ответах с сервера. Например в контролере
$user = User::find(1);
return response()->json($user);
в ответ уйдет абсолютно вся инфа из базы, включая пароль и тд. Но если в модели присутствует
$guarded = ['password'];
то в ответе поля с паролем уже не будет.

Возможно есть ещё нюансы, или моё мнение ошибочно. С ларой знаком лишь пару недель
Ответ написан
@kstyle
Если вы получили данные с формы, то можете одним махом их закинуть в модель $user->fill($input). Но хакер может заменить имена переменных формы и вы присвоите не те поля, если все fillable.

you should still never pass any raw array of user controlled input into a save or update method, as any column that is not guarded may be updated.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы