다음 Laravel 튜토리얼 칼럼에서는 laravel에서 clickhouse 쿼리를 사용할 때 발생하는 "DB::Exception: 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' 쿼리 처리 중 오류가 발생했습니다.
다음과 같이 최적화하세요:
$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 쿼리를 사용할 때 "열 누락" 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!