gpt4 book ai didi

Laravel 4 - 使用 hasMany 关系时插入多条记录

转载 作者:行者123 更新时间:2023-12-03 01:39:29 24 4
gpt4 key购买 nike

仍在适应 Laravel 4,我有点不确定为什么它不起作用。

在 L3 中,我能够像这样将多条记录插入到表中......

$comments = array(
array('message' => 'A new comment.'),
array('message' => 'A second comment.'),
);

$post = Post::find(1);

$post->comments()->save($comments);

但是,当我现在尝试执行类似操作时,要么插入没有外键的记录,就像这样......

$comments = array(
array('message' => 'A new comment.'),
array('message' => 'A second comment.'),
);

$post = Post::first();

$post->comments()->insert($comments);

或者(经过一些谷歌搜索)我尝试以下操作并得到 preg_match() 期望参数 2 为字符串,给定数组

$comments = new Comment(array(
array('message' => 'A new comment.'),
array('message' => 'A second comment.'),
));

$post = Post::first();

$post->comments()->save($comments);

以及 ...->save($comments) 我尝试过 ...->saveMany()...->associate() 但我遇到了与上一个示例相同的问题。

顺便说一句,我确实意识到我已将多维数组包装在一个对象中,但这似乎是执行此操作的正确方法。我尝试过不这样做,但也失败了。

我可能应该指出,我正在通过 artisan 运行种子命令。

编辑:这是日志文件中完整的 preg_match 错误

[2013-11-27 16:43:39] log.ERROR:异常“ErrorException”,消息“preg_match() 期望参数 2 为字符串,在/Applications/MAMP/htdocs/中给出数组”项目/www/bootstrap/compiled.php:6315

最佳答案

save() 需要单个模型,saveMany() 需要模型数组,而不是数据的关联数组。

但是 saveMany() 不会通过单个查询插入,它实际上会循环遍历模型并逐个插入(注意:L3 也这样做了)。

如果您需要插入更大的记录集,请不要使用 ORM,而使用查询构建器,怎么样 Manuel Pedrera编写了第一个示例代码。

这里只是为了记录一下如何使用 saveMany():

$post = Post::find(1);

$comments = array(
new Comment(array('message' => 'A new comment.')),
new Comment(array('message' => 'A second comment.')),
);

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

关于Laravel 4 - 使用 hasMany 关系时插入多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20248107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com