Heim > PHP-Framework > Laravel > Hauptteil

Lösen Sie das Problem „Fehlende Spalten', wenn Laravel eine Clickhouse-Abfrage verwendet

藏色散人
Freigeben: 2022-10-31 16:00:31
nach vorne
3195 Leute haben es durchsucht

Die folgende Laravel-Tutorial-Kolumne stellt Ihnen das Problem „DB::Exception: Fehlende Spalten“ vor, das durch die Verwendung von Clickhouse-Abfragen in Laravel verursacht wird. Ich hoffe, es wird für alle hilfreich sein!

Achten Sie bei der Verwendung von

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(&#39;create_time&#39;, &#39;<=&#39;, $endTime);
    }
Nach dem Login kopieren

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(&#39;clickhouse&#39;)
        ->table((new AccessLogs)->getTable());
    if(!empty($cookieId)) {
        $builder->where(&#39;cookie_id&#39;, $cookieId);
    }        
    if(!empty($host)) {
        $builder->where(&#39;host&#39;, $host);
    }        
    if(!empty($uri)) {
        $builder->where(&#39;uri&#39;, $uri);
    }
    if(!empty($startTime)) {
        $builder->where(&#39;create_time&#39;, &#39;>=&#39;, $startTime);
    }
    if(!empty($endTime)) {
        $builder->where(&#39;create_time&#39;, &#39;<=&#39;, $endTime);
    }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage