laveral 8 查询所有,批量插入

    /**
     * @description 根据条件获取数据
     * @param $where
     * @return array
     * @author swoole
     * @date 2022/8/5 15:24
     */
    public function findOne($where){
        if (empty($where)) {
            return false;
        }
        return self::where($where)->get()->toArray();
    }
    //跟进ids查询所有数据
    public function findAll($data){
        if (empty($data)) {
            return false;
        }
        return self::find($data)->toArray();
    }

//批量编辑
public function updateBatch($multipleData = [])
    {
        try {
            if (empty($multipleData)) {
                return false;
            }
            $tableName = $this->table; // 表名
            $firstRow = current($multipleData);

            $updateColumn = array_keys($firstRow);
            // 默认以id为条件更新,如果没有ID则以第一个字段为条件
            $referenceColumn = isset($firstRow['id']) ? 'id' : current($updateColumn);
            unset($updateColumn[0]);
            // 拼接sql语句
            $updateSql = "UPDATE " . $tableName . " SET ";
            $sets = [];
            $bindings = [];
            foreach ($updateColumn as $uColumn) {
                $setSql = "`" . $uColumn . "` = CASE ";
                foreach ($multipleData as $data) {
                    $setSql .= "WHEN `" . $referenceColumn . "` = ? THEN ? ";
                    $bindings[] = $data[$referenceColumn];
                    $bindings[] = $data[$uColumn];
                }
                $setSql .= "ELSE `" . $uColumn . "` END ";
                $sets[] = $setSql;
            }
            $updateSql .= implode(', ', $sets);
            $whereIn = collect($multipleData)->pluck($referenceColumn)->values()->all();
            $bindings = array_merge($bindings, $whereIn);
            $whereIn = rtrim(str_repeat('?,', count($whereIn)), ',');
            $updateSql = rtrim($updateSql, ", ") . " WHERE `" . $referenceColumn . "` IN (" . $whereIn . ")";

            // 传入预处理sql语句和对应绑定数据
            return DB::update($updateSql, $bindings);
        } catch (\Exception $e) {
            return false;
        }
    }

//批量编辑或者添加,相当于tp 的saveAll
public function batchInsertOrUpdate($data){
        try {
            if (empty($data)) {//如果传入数据为空 则直接返回
                return [
                    'insertNum' => 0,
                    'updateNum' => 0
                ];
            }
            $table = $this->table;  //如果未传入table则通过对象获得
            $columns = $this->getColumnListing();  //如果未传入table则通过对象获得

            //拼装sql
            $sql = "insert into " . $table . " (";
            foreach ($columns as $k => $column) {
                $sql .= $column . " ,";
            }
            $sql = trim($sql, ',');
            $sql .= " ) values ";

            foreach ($data as $k => $v) {
                $sql .= "(";
                foreach ($columns as $kk => $column) {
                    if ('updated_at' == $column) { //如果库中存在,create_at字段会被更新
                        $sql .= " '" . date('Y-m-d H:i:s') . "' ,";
                    } else {
                        $val = ''; //插入数据中缺少$colums中的字段时的默认值
                        if (isset($v[$column])) {
                            $val = $v[$column];
                            //$val = addslashes($val);  //在预定义的字符前添加反斜杠的字符串。
                        }
                        $sql .= " '" . $val . "' ,";
                    }
                }
                $sql = trim($sql, ',');
                $sql .= " ) ,";
            }
            $sql = trim($sql, ',');

            $sql .= "on duplicate key update ";
            foreach ($columns as $k => $column) {
                $sql .= $column . " = values (" . $column . ") ,";
            }
            $sql = trim($sql, ',');
            $sql .= ';';
            $columnsNum = count($data);
            $retNum = DB::update(DB::raw($sql));
            $updateNum = $retNum - $columnsNum;
            $insertNum = $columnsNum - $updateNum;
            return [
                'insertNum' => $insertNum,
                'updateNum' => $updateNum
            ];

        }catch (\Exception $e){
            return false;
        }
    }

PHP Laravel是一个流行的Web开发框架,可以简化PHP开发过程并提供更好的开发体验。curl_setopt函数是PHP中用于设置cURL选项的函数,而cURL是一个用于发送和接收HTTP请求的库。下面是使用PHP Laravel和curl_setopt函数进行POST请求的示例。 1. 在Laravel中,首先要确保cURL扩展已经安装和启用。可以在php.ini文件中将以下行取消注释: extension=curl 2. 在Laravel应用中,可以使用Guzzle HTTP客户端库作为curl_setopt函数的替代方案。Guzzle库提供了更简单而又强大的HTTP请求功能,可以使用Laravel的composer工具进行安装: composer require guzzlehttp/guzzle 3. 使用Guzzle库进行POST请求的示例代码如下: ```php use GuzzleHttp\Client; $url = 'http://example.com/api'; // POST请求的URL $data = ['name' => 'John', 'email' => 'john@example.com']; // POST请求的数据 $client = new Client(); $response = $client->post($url, ['form_params' => $data]); $statusCode = $response->getStatusCode(); // 获取响应的HTTP状态码 $responseData = $response->getBody()->getContents(); // 获取响应的内容 // 处理响应数据 ``` 在上面的示例中,使用Guzzle库创建了一个HTTP客户端实例$client。然后使用post方法发送POST请求,传递了请求的URL和POST数据。响应对象$response提供了一些方法来获取响应的状态码和内容。 使用curl_setopt函数进行POST请求的示例代码如下: ```php $url = 'http://example.com/api'; // POST请求的URL $data = ['name' => 'John', 'email' => 'john@example.com']; // POST请求的数据 $curl = curl_init($url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); // 处理响应数据 ``` 在上面的示例中,通过curl_init函数初始化cURL会话,并设置请求的URL。然后使用curl_setopt函数设置POST请求,传递请求的数据和其他选项。使用curl_exec函数执行请求,并使用curl_getinfo函数获取响应的HTTP状态码。最后使用curl_close函数关闭cURL会话。 以上就是使用PHP Laravel和curl_setopt函数进行POST请求的示例代码。根据具体情况,可以选用Guzzle库或curl_setopt函数来发送POST请求,并根据响应进行相应的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值