我在laravel中有查询,但是我只是想知道如何在php中查询,因为我对php不熟悉。
这是我在laravel中的查询:
$data = DB::table('users')
->join('order_schedules','users.id','=','order_schedules.driver_id')
->select('order_schedules.driver_id','users.name','order_schedules.date_time')
->orderBy('date_time','asc')
->get();
用户表= ID,名称,电子邮件和密码。
order_schedules = id,driver_id,类型和date_time。
我只想显示id,名称和date_time。我希望有人能帮助我。非常感谢。
答案 0 :(得分:0)
您可以从Laravel的查询构建器轻松获得完整的SQL查询。
$sql = DB::table('users')
->join('order_schedules','users.id','=','order_schedules.driver_id')
->select('order_schedules.driver_id','users.name','order_schedules.date_time')
->orderBy('date_time','asc')
->toSql();
$sql
将给出完整的sql查询。
此外,具有绑定的查询只有在将值与查询绑定为时,才会返回完整查询
$query_buider = DB::table('users')
->join('order_schedules','users.id','=','order_schedules.driver_id')
->select('order_schedules.driver_id','users.name','order_schedules.date_time')
->orderBy('date_time','asc')
->where('order_schedules.driver_id', 1) // Note this condition.
;
$sql = array_reduce($query_buider->getBindings(), function($sql, $binding){
return preg_replace('/\?/', is_numeric($binding) ? $binding : "'".$binding."'" , $sql, 1);
}, $query_buider->toSql());
$sql
将给出完整的sql查询。
此外,任何人都想遵循DRY方法来获取完整的SQL,
使用 AppServiceProvider
boot()
方法添加以下宏功能。
\Illuminate\Database\Query\Builder::macro('toFullSql', function(){
return array_reduce($this->getBindings(), function($sql, $binding){
return preg_replace('/\?/', is_numeric($binding) ? $binding : "'".$binding."'" , $sql, 1);
}, $this->toSql());
});
向Eloquent Builder添加别名。
\Illuminate\Database\Eloquent\Builder::macro('toFullSql', function(){
return ($this->getQuery()->toFullSql());
});
然后照常调试。
\Log::debug(User::first()->jobs()->toFullSql());