Heim >PHP-Framework >Laravel >Lösen Sie das Problem „Fehlende Spalten', wenn Laravel eine Clickhouse-Abfrage verwendet
besonders darauf: Schreiben Sie nicht so! 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); }Bei Abfragen mit mehreren Bedingungen wird das $where-Array in SQL als Feld behandelt, was zu DB::Exception: Missing columns: '2022-09-27 13:00:49' '2022-09-27 führt 16:00:49‘ beim Verarbeiten der Abfrage ist ein Fehler aufgetreten. Optimieren Sie wie folgt:
$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); }für eine korrekte Abfrage. Noch etwas: Verwenden Sie bei Abfragen in der Befehlszeile einfache Anführungszeichen für Parameterwerte. Wenn Sie doppelte Anführungszeichen verwenden, wird der Parameterwert auch als Feld behandelt:
Die korrekte Operation lautet: rrree
Das obige ist der detaillierte Inhalt vonLösen Sie das Problem „Fehlende Spalten', wenn Laravel eine Clickhouse-Abfrage verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!