не очень понятно, что относить к fillable(guarded). например, куда относить password, remember_token, имя картинки?
имя картинки не меняется, пароль и токен может меняться, но токен не задается из вне. на что смотреть?
Эти фишки Ларавеля нужны только для очень простых rest проектов. В реальной жизни они не то что не нужны, а даже мешают, так-как create часто вызывается из разных мест и с разными параметрами. Лучше создать BaseModel, поставить $guarded = false и не париться на счет $fillable и $guarded. Так что тут либо использовать validor + $request->only, либо чуть модифицированный Request, и от него уже все остальные наследовать. А в нем метод по типу "$request->neededFields()" который отдает только нужные поля, основываясь на array_keys($validationArray)
Надеюсь понятно. В двух словах: не используй эту хренотень.
$fillable и $guarded в модели отвечают за разный функционал. Сам не гуру но из практики знаю что первая переменная указывает на поля которые необходимы для создания записи в базу через ModelName::create();
Другими словами это набор столбоцов у которых нет значения по умолчанию.
$guarded - здесь перечисляются поля которые не следует светить в ответах с сервера. Например в контролере
$user = User::find(1);
return response()->json($user);
в ответ уйдет абсолютно вся инфа из базы, включая пароль и тд. Но если в модели присутствует
$guarded = ['password'];
то в ответе поля с паролем уже не будет.
Возможно есть ещё нюансы, или моё мнение ошибочно. С ларой знаком лишь пару недель
Если вы получили данные с формы, то можете одним махом их закинуть в модель $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.