插入新关系

时间:2014-09-18 14:46:08

标签: laravel laravel-4 eloquent

我只是浏览文档:

$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?

如果帖子的插入失败会发生什么,我可以阻止插入评论吗?

3 个答案:

答案 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();