Yii2.0实现的批量更新及批量插入功能示例

本文实例讲述了Yii2.0实现的批量更新及批量插入功能。分享给大家供大家参考,具体如下:

批量更新

方法1

/**
* 批量更新循环周期
* @param array $condition
* $condition = ['advertise_id' => '','status' => '', 'weekdays'=>[1,2,3]] 查询条件
* $params = ['status' => '']
* @param $params
* @return bool
*/
public function batchUpdateAdSchedule($condition = [], $params)
{
  if (count($condition) == 0 || !is_array($condition) || count($params) == 0) {
    return false;
  }
  $conditions = ' 1 = 1 ';
  $bind = [];
  if (array_key_exists('advertise_id', $condition) && !empty($condition['advertise_id'])) {
    $conditions .= ' AND `advertise_id` = :advertiseId';
    $bind['advertiseId'] = $condition['advertise_id'];
  }
  if (array_key_exists('status', $condition) && !empty($condition['status'])) {
    $conditions .= ' AND `status` = :status';
    $bind['status'] = $condition['status'];
  }
  $result = AdvertiseSchedule::updateAll($params, $conditions, $bind);
  return $result > 0 ? true : false;
}

方法2

/**
* 批量更新商品销量
* @param $params
* @return bool|int
* @throws \yii\db\Exception
*/
public function batchUpdateSalesNum($params)
{
  if (count($params) == 0 || !is_array($params)) {
    return false;
  }
  $sql = '';
  foreach ($params as $key => $value) {
    $sql .= 'UPDATE `morefun`.`mbb_goods` SET `sale_num` = `sale_num` -' . $value['amount'] . ' WHERE `id` =' . $value['goods_id'] . ';';
  }
  $result = Yii::$app->db->createCommand($sql)->execute();
  return $result == 1 ? true : false;
}

批量插入

/**
* 批量插入
* @param $params
* @return int
* @throws \yii\db\Exception
*/
public function batchAddShopClassConn($params)
{
  $connection = Yii::$app->db;
  $queryBuilder = $connection->queryBuilder;
  /*$sql = $queryBuilder->batchInsert('user', ['name', 'age'], [
    ['Tom', 30],
    ['Jane', 20],
    ['Linda', 25],
  ]);*/
  $sql = $queryBuilder->batchInsert(shopClassConn::tableName(),
    ['shop_id', 'class_id'], $params);
  return $connection->createCommand($sql)->execute();
}

PHP Ajax 跨域问题最佳解决方案

本文通过设置Access-Control-Allow-Origin来实现跨域。

例如:客户端的域名是client.runoob.com,而请求的域名是server.runoob.com。

如果直接使用ajax访问,会有以下错误:

XMLHttpRequest cannot load http://server.runoob.com/server.php. No 'Access-Control-Allow-Origin' header is present on the requested resource.Origin 'http://client.runoob.com' is therefore not allowed access.

1、允许单个域名访问

指定某域名(http://client.runoob.com)跨域访问,则只需在http://server.runoob.com/server.php文件头部添加如下代码:

header('Access-Control-Allow-Origin:http://client.runoob.com');

2、允许多个域名访问

指定多个域名(http://client1.runoob.com、http://client2.runoob.com等)跨域访问,则只需在http://server.runoob.com/server.php文件头部添加如下代码:

$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';  
  
$allow_origin = array(  
    'http://client1.runoob.com',  
    'http://client2.runoob.com'  
);  
  
if(in_array($origin, $allow_origin)){  
    header('Access-Control-Allow-Origin:'.$origin);       
} 

3、允许所有域名访问

允许所有域名访问则只需在http://server.runoob.com/server.php文件头部添加如下代码:

header('Access-Control-Allow-Origin:*'); 

用了16款考研刷题app,就一两款好用,心好累

可考点、可随机、可刷套卷,有笔记、收藏、错题本,有计时,有手写蒙版打草稿

1.我是在职考研,选择刷题app,利用日常工作和通勤的间隙刷一刷。

2.主要用于刷管理类联考(管综),历年真题。

3.比较推荐的app有

MBA大师:可考点、可随机、可刷套卷,有计时,有错题集锦也可收藏题反复刷,做题时有手写蒙版打草稿,贴心。(缺点是只能全部做完提交才能看答案)(如下图)

粉笔考研:可刷套卷,可随机,可智能组合,有计时,有错题集锦也可收藏题反复刷,还有笔记和历史记录可查,做题时有手写蒙版打草稿,贴心。 (缺点是不能单独刷考点)

4.可以用用的

考研全题库:可考点、可随机、可刷套卷,有笔记、收藏、错题本,有计时,有手写蒙版打草稿(缺点是真题只更新到2018年)

5.不推荐

考研汇:之前最喜欢的一款,因为可以一道题一道题的刷(充分利用碎片时间),不需要等到刷完了提交才能看答案。可考点、可随机、可套卷、有计时,可收藏、有笔记,有错题本。(缺点是真题有乱码,有的题干表格无法显示,跟客服反馈没有任何回应)刷真题遇到几次题干有错误,无语(如下图)

考研准题库:可考点、随机、刷套卷,有笔记、收藏、错题本,有计时(缺点:没有蒙版打草稿,免费的真题只有4套,升级题库需要付费,且注册完了没一会 就有人打电话过来叫我报班

小西考研:可智能、可随机、可刷套题,有错题本、有收藏、有笔记(缺点:考点练习打不开,没有草稿蒙版。)

考研帮:刷题大部分功能都有,没有蒙版草稿功能(缺点:真题题库只更新到2017年)

掌上考研:主要是提供咨询,没有找到刷题的地方。

考虫:是上课的,没有找到刷题的地方。

研途考研:只有政治题,app会跳转到微信小程序刷题(不明白app存在的意义)

考研通:支付宝一键登录,还要验证手机,我觉得不安全,直接放弃了登陆,就用不了了。

师兄帮帮:拍照搜题用的,没有题库。

太府考研:属于咨询上课类型的,不能刷题。

橙啦:以英语为主,听课用的,练习科目没有管综,再见!

考研派:题库只有英语、政治,且真题题库只更新到2017年,再见!

口袋题库考研:专门刷题的app,啥都收费,它没什么不好,是我不好,我穷。(如下图)

php去除换行(回车换行)的三种方法


<?php   
 //php 不同系统的换行  
//不同系统之间换行的实现是不一样的  
//linux 与unix中用 \n  
//MAC 用 \r  
//window 为了体现与linux不同 则是 \r\n  
//所以在不同平台上 实现方法就不一样  
//php 有三种方法来解决  

//1、使用str_replace 来替换换行  
$str = str_replace(array("\r\n", "\r", "\n"), "", $str);   

//2、使用正则替换  
$str = preg_replace('//s*/', '', $str);  

//3、使用php定义好的变量 (建议使用)  
$str = str_replace(PHP_EOL, '', $str);   
?>  

Markdown image 替换为 html标签

使用Typora可以实现公式的预览,图片自动上传到服务器,但图片是markdown语法,这里实现从Markdown 转化为 Html的 img标签

public static function imageReplace($content)
{

	$pattern = ['/!\[img\]\((.*)\)/U','/<p>\s*<\/p>/U'];

	$replacement = ['<img src="\\1" \/>','']; 

	return preg_replace($pattern, $replacement, $content);

}