Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara menggunakan 'memiliki' dengan paginate pada kolom hubungan di laravel 5

Perbarui

Jika Anda menggunakan paginate() dengan kueri Anda, laravel akan mencoba mengeksekusi kode SQL berikut untuk menghitung jumlah total kemungkinan kecocokan:

select count(*) as aggregate 
from `vehicles` inner join `dealers` 
  on `vehicles`.`dealer_id` = `dealers`.`id`
having distance < 200

Seperti yang Anda lihat, tidak ada kolom atau alias distance dalam kueri ini.

Opsi 2 dalam jawaban asli saya akan memperbaiki masalah itu juga.

Jawaban asli

Tampaknya itu adalah masalah mode ketat MySQL. Jika Anda menggunakan laravel 5.3, mode ketat diaktifkan per default. Anda memiliki dua opsi:

Opsi 1:Nonaktifkan mode ketat untuk MySQL di config/database.php

...
'mysql' => [
    ...
    'strict' => false,
    ...
],
...

Opsi 2:Gunakan kondisi WHERE

Vehicle::join('dealers', 'vehicles.dealer_id', '=', 'dealers.id')
     ->select(DB::raw("dealers.id, ( cos( radians(latitude) ) * cos( radians( longitude ) ) ) AS distance"))
     ->whereRaw('cos( radians(latitude) ) * cos( radians( longitude ) ) < 200');

Dokumentasi:

Mode SQL Server - ONLY_FULL_GROUP_BY



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membubuhi keterangan bidang peningkatan otomatis MYSQL dengan anotasi JPA

  2. Kolom tidak dikenal di 'daftar bidang', tetapi kolom memang ada

  3. MySQL Integer vs indeks DateTime

  4. file tidak diunggah di ajax php mysql

  5. meraih baris pertama hanya dalam kueri mysql