php elequent ORM, Raw Expressions, 原生sql group by, count, or, orWhere查询, update null

raw expression

    private function listCustomerIds() {
        // SELECT customer_id,name,count(1) as c from contact group by customer_id,name HAVING c>1;
        /** @var $db \Illuminate\Database\Connection */
        $db = $this->tblCustomer->dbCRM;
        /** @var $qb \Illuminate\Database\Query\Builder */
        $qb = $db->table(ContactTable::TABLE)
            ->select($db->raw("customer_id, name, count(1) as c"))
            ->where('is_deleted', '=', 0)
            ->groupBy('customer_id','name')
            ->having('c', '>', 1);
        return $qb->get()->all();
    }

 

https://laravel.com/docs/8.x/queries

$users = DB::table('users')
             ->select(DB::raw('count(*) as user_count, status'))
             ->where('status', '<>', 1)
             ->groupBy('status')
             ->get();

 

假设要实现下面的SQL

select * from `log` 
where (`relation_id` = '10951' and `relation_type` = '3') 
    or (`relation_id` in ('21976', '21983') and `relation_type` = '5');

 

QueryBuilder操作方式如下:

<?php
// ...
/** @var $query \Illuminate\Database\Query\Builder */	
$query->where(function($query) use ($params) {
	if (is_array($param['relation_id'])) {
		$query->whereIn('relation_id', $param['relation_id']);
	} else {
		$query->where('relation_id', '=', $param['relation_id']);
	}
	$query->where('relation_type', '=',  $param['relation_type']);
});
if (isset($params['or'])) {
	$cond = $params['or'];
	$query->orWhere(function($query) use ($cond) {
		$query->whereIn('relation_id', $cond['relation_id'])
			->where('relation_type', '=', $cond['relation_type']);
	});
}

用闭包实现括号效果

 

update xxxTable set xxxColumn = null where id=?

 

public static function restoreById($id) {
    return DB::update("UPDATE `".self::getInstance()->getTable()."` SET `".self::getInstance()->getDeletedAtColumn()."`=NULL WHERE id=?", [$id]);
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
rslidar_msg是一个ROS2环境下的雷达packet消息定义工程。要编译rslidar_msg,你可以按照以下步骤进行操作: 1. 首先,确保你已经成功编译了rslidar_sdk。你可以使用以下命令编译rslidar_sdk: ``` colcon build --packages-select rslidar_sdk ``` 2. 接下来,你需要在ROS2环境下同步rslidar_msg。你可以使用以下命令从网上同步rslidar_msg: ``` cd ~/RS_Helios_eloquentws/src git clone https://github.com/RoboSense-LiDAR/rslidar_msg ``` 3. 然后,你需要初始化和更新rslidar_sdk的子模块。你可以使用以下命令完成这一步骤: ``` cd rslidar_sdk git submodule init git submodule update ``` 4. 最后,你可以在RS_Helios_eloquentws目录下编译整个工程,包括rslidar-sdk和rslidar-msg。你可以使用以下命令完成编译: ``` cd ~/RS_Helios_eloquentws colcon build --packages-select rslidar-sdk rslidar-msg ``` 这样,你就可以成功编译rslidar_msg了。 #### 引用[.reference_title] - *1* [ROS2驱动速腾16线激光雷达](https://blog.csdn.net/weixin_56641176/article/details/131022156)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【EHub_tx1_A200】Ubuntu18.04 + ROS-Melodic/ROS2-Elequent + 速腾 RS-Helios_16P雷达 评测](https://blog.csdn.net/cau_weiyuhu/article/details/130892684)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fareast_mzh

打赏个金币

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值