【发布时间】:2021-09-20 18:05:52
【问题描述】:
我构建了一个 Eloquent 查询,如下所示。
DB::connection()->enableQueryLog();
$reportSelect = Payment::join('users', 'users.id', '=', 'payment.user_id')
->join('user_information', 'user_information.user_id', '=', 'users.id')
->join('register_type', 'register_type.id', '=', 'payment.register_type_id')
->join('payment_type', 'payment_type.id', '=', 'payment.payment_type_id')
->select(
'payment.id',
'user_information.full_name as user_full_name',
'register_type.register_type',
'payment_type.payment_type',
'payment.created_at',
'payment.updated_at'
);
$date_start = '2021-7-6';
$date_end = '2021-7-10';
$reportSelect->whereBetween('payment.created_at', [$date_start, $date_end])->get();
$queries = DB::getQueryLog();
return $queries;
这个SQL查询日志的结果如下。
SELECT
'payment'.'id',
'user_information'.'full_name' as 'user_full_name',
'register_type'.'register_type',
'payment_type'.'payment_type',
'payment'.'created_at',
'payment'.'updated_at'
FROM 'payment'
inner join 'users' on 'users'.'id' = 'payment'.'user_id'
inner join 'user_information' on 'user_information'.'user_id' = 'users'.'id'
inner join 'register_type' on 'register_type'.'id' = 'payment'.'register_type_id'
inner join 'payment_type' on 'payment_type'.'id' = 'payment'.'payment_type_id'
WHERE 'payment'.'created_at' between ? and ?
为什么不在 where 子句中设置我的 date_start 参数和 date_end 参数,而是放置字符 ?。提前致谢;对不起我的英语。
【问题讨论】:
-
这很正常,这是 Laravel 显示查询的方式,
?表示将在那里替换/绑定一个值。 -
在其他人中选择查询“?”不出现和?字符是查询不起作用的原因