Php 如何在laravel中创建/编辑多个有多个项目?

Php 如何在laravel中创建/编辑多个有多个项目?,php,laravel,laravel-4,Php,Laravel,Laravel 4,我有一个帖子和附件模型。帖子模型具有标题、正文属性。附件具有标题、文件属性。这篇文章有很多附件 在单个表单中,我希望用户能够添加/编辑多个附件 现在我是这样做的: Controller@edit: 将帖子的现有附件转换为数组,并将其与旧输入合并 表单视图: 循环浏览附件和输出字段 字段名称的格式为附件[id][title] 如果ID来自现有附件,则它将是一个整数。如果是新的,它将是一个随机数,小于1(Math.random()在Javascript中) Controller@upda

我有一个帖子和附件模型。帖子模型具有标题、正文属性。附件具有标题、文件属性。这篇文章有很多附件

在单个表单中,我希望用户能够添加/编辑多个附件

现在我是这样做的:

Controller@edit:

  • 将帖子的现有附件转换为数组,并将其与旧输入合并
表单视图:

  • 循环浏览附件和输出字段
    • 字段名称的格式为
      附件[id][title]
    • 如果ID来自现有附件,则它将是一个整数。如果是新的,它将是一个随机数,小于1(
      Math.random()
      在Javascript中)
Controller@update:

  • 循环执行
    Input::get('attachments')
    • 如果键是整数,则验证附件以进行更新(文件不是必需的,我们可以使用现有文件)和更新
    • 否则,它是新的附件,请验证它的创建并将其存储在数组中
    • 如果所有附件都有效,请创建所有这些附件
    • 如果存在验证错误,请重定向回
      withInput()
      withErrors()

但是,返回时,错误与输入字段没有正确关联。我假设这是因为我使用数组而不是对象。有更好的方法吗?

关于laravel,我可能会直接创建附件对象,然后将对象添加到帖子中。下面的文档中也对此进行了解释


您应该能够以相同的方式更新注释(当然不需要实例化新的附件对象)。

验证如何?当存在验证错误时,我会将它们发回,我希望错误和旧输入都存在。这并没有发生。
$atachments = array(
    new Attachment(array('title' => 'Attachment #1.')),
    new Attachment(array('title' => 'Image Lol.')),
    new Attachment(array('title' => 'The answer is 42.'))
);

$post = Post::find(1);

$post->attachments()->saveMany($comments);