为什么在larevel中创建许多相关记录存在问题?

时间:2017-08-13 17:59:41

标签: php laravel

我有两个相关的表:表A 表B

模型a

public function comments(){
    return $this->hasMany('App\tableB');
}

模型b

public function posts()
{
    return $this->belongsTo('App\tableA');
}

我想在表A 中创建一条记录,然后使用它并在表B 中插入许多记录。

此代码有效:

$s = tableA::create(["postname" =>"test"]); // this create success

现在我为这个创建的帖子插入评论记录:

$s->comments()->createMany([["txt"=>"a"],["txt"=>"b"]]);

问题1:

我启用了查询调试并看到此代码:

$s->comments()->createMany([["txt"=>"a"],["txt"=>"b"]]);

为每个插页运行一个查询(即insert into x values (a)insert into x values (b )以及........)!!!

如何更改代码,使其不会为每条记录运行一个Insert语句?!

问题2:

将数组传递给laravel createMany()方法时出现问题:(。

如何用php创建输出[["txt"=>"a"],["txt"=>"b"]]

我尝试使用下面的代码进行创建,但它不起作用,laravel显示错误

  $b = array();
        array_push($b,"txt","yellow");
        array_push($b,"txt","ssss");

有人能帮助我吗?

我想要完全正确:see the link(createMany方法)---但它为每次插入运行多个查询

$post = App\Post::find(1);

$post->comments()->createMany([
    [
        'message' => 'A new comment.',
    ],
    [
        'message' => 'Another new comment.',
    ],
]);

0 个答案:

没有答案