我只是浏览文档:
$post = Post::find(1);
$comments = array(
new Comment(array('message' => 'A new comment.')),
new Comment(array('message' => 'A second comment.')),
);
$post->comments()->save($comments);
我已经在我的网站上实现了类似上面的内容,我的问题是,我希望同时插入一个新帖子,有没有办法做到这一点,而不是使用find?
如果帖子的插入失败会发生什么,我可以阻止插入评论吗?
答案 0 :(得分:1)
在保存相关模型之前,必须保存关系的父级。不能一蹴而就。 (btw push
也不适用于它,如果你想知道)。
$post = Post::create([ ... post data here ...]);
// or
$post = new Post;
$post->whatever = 'someValue';
$post->save();
// then
$post->comments()->saveMany($comments);
答案 1 :(得分:0)
你可以这样做:
$post = new Post();
$post->title = 'my title';
$post->save();
$comments = array(
new Comment(array('message' => 'A new comment.')),
new Comment(array('message' => 'A second comment.')),
);
$post->comments()->saveMany($comments);
这样您就可以为其创建新帖子并保存评论。我没有测试如果出现问题会发生什么,但我认为不会插入评论,因为没有相关的帖子ID。
答案 2 :(得分:0)
为什么不首先创建一个帖子,然后附加相似的模型。
$post = new Post();
$post->save();
然后遍历注释并在注释表中分配post_id属性。
如果帖子存在,帖子模型的id字段将可用。
$comment = new Comment();
$comment->post_id = $post->id;
$comment->save();