Laravel/Lumen 扩展DB Query方法以提供完整SQL执行语句

开发调试时,可能需要调试某个节点SQL完整的执行语句
而Laravel/Lumen默认提供的在查看上不够直观,例如:select * from TableName where id = ?
参数值以?作为占位,显得不够直观

基于上述情况,我们可以扩展DB的Query方法来实现需求;
App\Providers\AppServiceProviderregister方法内

namespace App\Providers;
use Illuminate\Support\ServiceProvider;
// 引入注册接口
use Illuminate\Database\Query\Builder AS queryBuilder;
use Illuminate\Database\Eloquent\Builder AS eloquentBuilder;

class AppServiceProvider extends ServiceProvider
{
	/**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
    	// 注册自定义query方法:toRawSql
        queryBuilder::macro('toRawSql', function(){
        	// 执行逻辑
            return array_reduce($this->getBindings(), function($sql, $binding){
                return preg_replace('/\?/', is_numeric($binding) ? $binding : $binding, $sql, 1);
            }, $this->toSql());
        });

		// Eloquent ORM注册自定义query方法:toRawSql
        eloquentBuilder::macro('toRawSql', function(){
            return $this->getQuery()->toRawSql();
        });
    }
}

当我们注册好DB query的自定义方法后,使用方式:

$_rsSql = DB::table('TableName')->where('id',1)->toRawSql();
// $_rsSql返回:
// select * from `TableName` where `id` = 1

Eloquent ORM方式:

$_rsSql = \App\Models\Users::toRawSql(;
// $_rsSql返回:
// select * from `users`
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陀螺蚁

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值