为了账号安全,请及时绑定邮箱和手机立即绑定

使用雄辩的ORM在Laravel中批量插入

使用雄辩的ORM在Laravel中批量插入

PHP
慕斯王 2019-09-02 08:22:01
我们如何使用Eloquent ORM在Laravel中执行批量数据库插入?我想在Laravel中完成此任务:https://stackoverflow.com/a/10615821/600516 但我收到以下错误。SQLSTATE [HY093]:参数号无效:混合命名和位置参数。
查看完整描述

3 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

你可以使用Eloquent::insert()。


例如:


$data = array(

    array('name'=>'Coder 1', 'rep'=>'4096'),

    array('name'=>'Coder 2', 'rep'=>'2048'),

    //...

);


Coder::insert($data);


查看完整回答
反对 回复 2019-09-02
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

我们可以更新GTF答案以轻松更新时间戳


$data = array(

    array(

        'name'=>'Coder 1', 'rep'=>'4096',

        'created_at'=>date('Y-m-d H:i:s'),

        'modified_at'=> date('Y-m-d H:i:s')

       ),

    array(

         'name'=>'Coder 2', 'rep'=>'2048',

         'created_at'=>date('Y-m-d H:i:s'),

         'modified_at'=> date('Y-m-d H:i:s')

       ),

    //...

);


Coder::insert($data);

更新:为了简化我们可以使用碳的日期,@ Pedro Moreira建议


$now = Carbon::now('utc')->toDateTimeString();

$data = array(

    array(

        'name'=>'Coder 1', 'rep'=>'4096',

        'created_at'=> $now,

        'modified_at'=> $now

       ),

    array(

         'name'=>'Coder 2', 'rep'=>'2048',

         'created_at'=> $now,

         'modified_at'=> $now

       ),

    //...

);


Coder::insert($data);

UPDATE2:对于laravel 5,使用updated_at而不是modified_at


$now = Carbon::now('utc')->toDateTimeString();

$data = array(

    array(

        'name'=>'Coder 1', 'rep'=>'4096',

        'created_at'=> $now,

        'updated_at'=> $now

       ),

    array(

         'name'=>'Coder 2', 'rep'=>'2048',

         'created_at'=> $now,

         'updated_at'=> $now

       ),

    //...

);


Coder::insert($data);


查看完整回答
反对 回复 2019-09-02
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

对于正在阅读本文的人,请查看createMany()方法。


/**

 * Create a Collection of new instances of the related model.

 *

 * @param  array  $records

 * @return \Illuminate\Database\Eloquent\Collection

 */

public function createMany(array $records)

{

    $instances = $this->related->newCollection();


    foreach ($records as $record) {

        $instances->push($this->create($record));

    }


    return $instances;

}


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 1155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信