Rumah > rangka kerja php > Laravel > Selesaikan masalah 'Lajur tiada' apabila laravel menggunakan pertanyaan clickhouse

Selesaikan masalah 'Lajur tiada' apabila laravel menggunakan pertanyaan clickhouse

藏色散人
Lepaskan: 2022-10-31 16:00:31
ke hadapan
3234 orang telah melayarinya

Lajur Tutorial Laravel berikut akan memperkenalkan kepada anda masalah "DB::Exception: Missing columns" yang disebabkan oleh menggunakan pertanyaan clickhouse dalam laravel.

Berhati-hati apabila menggunakan clickhouse : anda tidak boleh menulis seperti ini!

   $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);
    }
Salin selepas log masuk

Apabila membuat pertanyaan dengan berbilang syarat, tatasusunan $where akan dianggap sebagai medan dalam SQL, menghasilkan DB::Exception: Lajur tiada: '2022-09-27 13:00:49' '2022-09-27 16:00:49' semasa memproses ralat pertanyaan.

Optimumkan seperti ini:

   $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);
    }
Salin selepas log masuk

untuk membuat pertanyaan dengan betul.

Satu lagi perkara yang perlu dinyatakan: apabila membuat pertanyaan pada baris arahan, gunakan petikan tunggal untuk nilai parameter Apabila menggunakan petikan berganda, nilai parameter juga akan dianggap sebagai medan:

Operasi yang betul ialah:

Atas ialah kandungan terperinci Selesaikan masalah 'Lajur tiada' apabila laravel menggunakan pertanyaan clickhouse. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan