将 \[title\] 添加到可填充属性以允许在 \[App\\Post\] 上进行批量分配

新手上路,请多包涵

在 Mysql 中插入数据时,我遇到了以下错误:

“将 [title] 添加到可填充属性以允许在 [App\Post] 上进行批量分配。”

这是我的代码:

 $post = Post::create([
'title' => $request->input('title'),
'body' => $request->input('body')
]);

当我使用另一种方式插入数据时,它工作正常:以下代码工作正常:

 //Create Post
$post = new Post;
$post->title = $request->input('title');
$post->body = $request->input('body');
$post->save();


谁能解释为什么代码的上部会引发错误?

原文由 Muhammad Mansha 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 483
2 个回答

为模型 Post 中的可填充数组添加标题,以允许通过创建和大量方法进行保存

protected $fillable = ['title'];

原文由 Walter Cejas 发布,翻译遵循 CC BY-SA 4.0 许可协议

我参加聚会迟到了,但我遇到了这个问题,解决方案完全不同。

在我的 PostController 中,我正在检查身份验证,然后发现:

 Post::where('slug', $oldSlug)->first()->update([
            'image_url' => $request->image_url,
            'slug' => $newSlug,
            'title' => $request->title,
            'body' => $request->body,
            'description' => $request->description,
            'user_id' => auth()->user()->id,
            'catagory' => $request->catagory,
        ]);

我看着它试图理解为什么它不喜欢“image_url”,尖叫着“将 [‘image_url’] 添加到可填充属性以允许批量分配”。

我意识到我添加了 ->first() 以确保我只收到一个帖子,但由于所有 slug 都经过验证和验证是唯一的,所以我放弃了 ->first()

 Post::where('slug', $oldSlug)->update([
        'image_url' => $request->image_url,
        'slug' => $newSlug,
        'title' => $request->title,
        'body' => $request->body,
        'description' => $request->description,
        'user_id' => auth()->user()->id,
        'catagory' => $request->catagory,
    ]);

就像魔术一样,它起作用了。

如果有更高级知识的人可以解释它 为什么 起作用,我会非常有兴趣知道。谢谢!

原文由 user9895412 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题