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

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

藏色散人
藏色散人nach vorne
2022-10-31 16:00:313234Durchsuche

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);
    }

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);
    }

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen