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

时间:2014-11-14 15:03:35

标签: php laravel laravel-4

我有一个帖子和附件模型。帖子模型有标题,身体属性。附件具有标题,文件属性。发布has_many附件。

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

现在我这样做:

控制器@编辑:

  • 将Post的现有附件转换为数组并将其与旧输入合并

表单视图:

  • 循环播放附件和输出字段
    • 字段名称将采用attachments[id][title]
    • 的形式
    • 如果ID来自现有附件,则它将是整数。如果是新的,则它将是一个随机数,小于1(Javascript中为Math.random()

控制器@更新:

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

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

1 个答案:

答案 0 :(得分:1)

关于laravel,我可能会先创建附件对象,然后将对象添加到帖子中。 Inserting Related Models

下的文档中也对此进行了解释
$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);

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