красноречивый $ fillable для Model :: create () и другой $ fillable для Model-> update () - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужен способ установки ArticleCategory только при создании модели Article, и он не изменяется в процессе обновления с использованием массива $ fillable.Мне нужно сделать это, имея в виду следующее:

1 - я хочу сделать это с помощью массового назначения 2 - я использую подтверждение запроса формы для своей проверки

, так что есть ли $ fillable массив длясоздать и один для обновления?

Спасибо ...

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Вы не можете этого сделать, но вы можете рассмотреть следующую альтернативу:

Не помещайте ArticleCategory в ваш массив $fillable.

Используйте следующее:

 $article = new Article($request->all());
 $article->ArticleCategory = $request->input('ArticleCategory');
 $article->save();

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

Я думаю, что это был бы разумный способ справиться с этим, поскольку (из его звуков) ArticleCategory в целом следует охранять.

0 голосов
/ 10 декабря 2018

Существует только одно свойство fillable, поэтому то, что вы хотите, по умолчанию невозможно,

Но вы можете использовать only и просто получить входные данные, которые хотите обновить:

Из документов:

Если вам нужно извлечь подмножество входных данных, вы можете использовать методы only и only.Оба эти метода принимают один массив или динамический список аргументов:

$input = $request->only('username', 'password');

$input = $request->except(['credit_card']);

В вашем случае это будет примерно так:

public function update(UpdateArticleRequest $request, $id)
{
    $article = Article::findOrFail($id);
    $article->update($request->only('title', 'name'));
}
...