雄辩的Model :: create()的特定$ fillable和Model-> update()的另一个$ fillable

时间:2018-12-10 13:15:15

标签: php laravel laravel-5.6 php-7.2

我需要一种仅在创建Article模型时设置ArticleCategory的方法,并且在使用$ fillable数组的更新过程中不会更改此方法。我需要做到以下几点:

1-我想通过大规模分配来做到这一点 2-我使用表单请求验证进行验证

那么有$ fillable数组用于创建,一个用于更新吗?

谢谢...

2 个答案:

答案 0 :(得分:0)

只有一个fillable属性,因此默认情况下无法实现所需的操作。

但是您可以使用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'));
}

答案 1 :(得分:0)

您不能真正做到这一点,但可以考虑以下替代方案:

请勿将ArticleCategory放入$fillable数组中。

使用以下内容:

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

通过这种方式,您可以在需要时显式设置文章类别,并防止其进行大量分配。

我认为这是解决此问题的明智方法,因为ArticleCategory应该受到一般保护。