本文给大家带来了关于laravel的相关知识,旨在帮助大家解决当laravel用clickhouse查询引起的“DB::Exception: Missing columns”问题,下面是详细内容。
当laravel用clickhouse查询出现Missing columns问题时如何解决
使用clickhouse时的错误示范:
$where = [];
if($cookieId) {
$where['cookie_id'] = $cookieId;
}
if($host) {
$where['host'] = $host;
}
if($uri) {
$where['uri'] = $uri;
}
$builder = DB::connection('clickhouse')
->table((new AccessLogs)->getTable())
->where($where);
if(!empty($startTime)) {
$builder->where('create_time', '>=', $startTime);
}
if(!empty($endTime)) {
$builder->where('create_time', '<=', $endTime);
}
当多个条件查询时,$where 数组在 sql 中会被当成一个字段,从而导致 DB:: Exception: Missing columns: ‘2022-09-27 13:00:49’ ‘2022-09-27 16:00:49’ while processing query 的错误。
优化:
$builder = DB::connection('clickhouse')
->table((new AccessLogs)->getTable());
if(!empty($cookieId)) {
$builder->where('cookie_id', $cookieId);
}
if(!empty($host)) {
$builder->where('host', $host);
}
if(!empty($uri)) {
$builder->where('uri', $uri);
}
if(!empty($startTime)) {
$builder->where('create_time', '>=', $startTime);
}
if(!empty($endTime)) {
$builder->where('create_time', '<=', $endTime);
}
在命令行查询时,参数值使用单引号,使用双引号时,参数值也会被当成一个字段:
正确操作:
select * from access_log where create_time >= ‘2022-09-27 13:00:49’ and create_time <= ‘2022-09-27 16:00:49’ order by create_time desc limit 10;
关于laravel用clickhouse查询出现Missing columns问题时的解决方法分享到这里就结束了,翼速应用平台内有更多相关资讯,欢迎查阅!
我来说两句