当前位置: 首页 > 知识库问答 >
问题:

批量插入Laravel使用雄辩的ORM

方鸿振
2023-03-14

如何使用雄辩的ORM在Laravel中执行批量数据库插入?

我想在拉威尔完成这一点:https://stackoverflow.com/a/10615821/600516 但是我得到了以下错误。

SQLSTATE[HY093]:无效参数编号:混合命名参数和位置参数。

共有3个答案

诸葛雅达
2023-03-14

这就是你如何以更雄辩的方式做到这一点,

    $allintests = [];
    foreach($intersts as $item){ //$intersts array contains input data
        $intestcat = new User_Category();
        $intestcat->memberid = $item->memberid;
        $intestcat->catid= $item->catid;
        $allintests[] = $intestcat->attributesToArray();
    }
    User_Category::insert($allintests);
葛阳华
2023-03-14

我们可以更新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);

更新2:对于laravel 5,使用位于的updated\u,而不是位于

$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);
贺季同
2023-03-14

您可以使用Eloquent::插入()。

例如:

$data = array(
    array('name'=>'Coder 1', 'rep'=>'4096'),
    array('name'=>'Coder 2', 'rep'=>'2048'),
    //...
);

Coder::insert($data);
 类似资料:
  • 问题内容: 我们如何使用雄辩的ORM在Laravel中执行批量数据库插入? 问题答案: 您可以使用。 例如:

  • 在有说服力的ORM上,是否有一种较短的方法在Laravel中插入数据? 目前我正在这样做: 就像你看到的,所有的列都像属性一样命名。 我知道您可以将对象与all()函数和fetch()一起使用。但是我从另一个对象(soap服务器)获取数据。 有没有办法转换这个?也许在模型上?

  • 在发布这篇文章之前,我做了很多研究。 我得到以下错误时,试图插入一个记录到PostgreSQL使用Laravel雄辩的ORM。 这是错误: 这是数据库表创建模式: 这就是我试图执行的代码: 我创建了一个模型类FbPostShareCount扩展雄辩。 我知道laravel不支持复杂的键,但当我使用MySQL时,这个问题并没有发生

  • 如何使用laravel雄辩的ORM关系在多个表中发出一个插入请求。即 表1:用户 id 姓名 电子邮件 表2:员额 id 表3:图像 id 用户id 邮政id 图像名称 关系 表id引用了其他两个表中的 表与

  • 数据结构如下: 转介及统计数字 现在,对于这个表,我想插入两个数组,第一个数组将成功插入,如下所示: 现在第二个数组是$userWriterReferralStatsArray,在插入这个数组时,我想检查是否重复了相同的日期和相同的注册用户id,然后它应该更新,而不是插入新行。我如何实现它,或者请建议我是否有其他好的方法来实现它,因为有大量的行。 提前感谢

  • 始终使用Laravel Elotent而不是原始SQL有什么好处吗? 我有一个习惯,首先在phpMyAdmin中编写SQL来检查关系,然后将其翻译成雄辩的ORM。 有时,翻译成雄辩的ORM是痛苦和耗时的,尤其是从长而复杂的SQL查询进行翻译。与使用雄辩的ORM相比,我能够用SQL快速编写。