thinkphp使用sql语句大批量新增数据(效率会比使用saveAll效率高)

  /**
   * 发送系统消息
   * @param $title 消息标题
   * @param $content 消息内容
   */
  public function systemMessage($title, $content = '') {
    $uid_arr = User::build() -> column('uid'); // 用户uid列表
    $insert_list = [];
    $time = time();
    foreach ($uid_arr as $uid) {
      $message['uid'] = $uid;
      $message['title'] = $title;
      $message['content'] = $content;
      $message['type'] = 'system';
      $message['create_time'] = $time;
      $message['update_time'] = $time;
      $insert_list[] = $message;
    }
    $sql = "insert into `cy_user_message` (`uid`,`title`,`content`,`type`,`create_time`,`update_time`) values ";
    foreach ($insert_list as $insert_data) {
      $n = 0;
      foreach ($insert_data as $key => $value) {
        $n ++;
        if ($n == 1) {
          $sql .= "('";
        }
        $sql .= $value;
        if ($n != count($insert_data)) {
          $sql .= "','";
        } else {
          $sql .= "'),";
        }
      }
    }
    $sql = substr($sql, 0, strlen($sql) - 1);
    try {
      Db::query($sql);
    } catch (\Exception $e) {
      throw new \think\Exception($e -> getMessage());
    }
  }

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐