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

Cara mendapatkan dan memesan entri yang paling relevan dari database dengan beberapa kata kunci Laravel 5

Oke mungkin beberapa pesulap SQL bisa memberi Anda solusi SQL yang lebih baik. Tapi sampai saat itu...

Beginilah cara saya melakukannya dengan Laravel koleksi (mengurutkan dengan php):

$search_terms = array('York', 'North Yorkshire');

$properties = Property::where(function ($q) use ($search_terms) {
            foreach ($search_terms as $value) {
                $q->orWhere('address1', 'like', "%{$value}%");
                $q->orWhere('address2', 'like', "%{$value}%");
                $q->orWhere('postcode', 'like', "%{$value}%");
                $q->orWhere('city_town', 'like', "%{$value}%");
                $q->orWhere('county', 'like', "%{$value}%");
            }
        })->paginate(25);

$props = ['address1', 'address2', 'postcode', 'city_town', 'county'];

$properties = $properties->sortByDesc(function($i, $k) use ($search_terms, $props) {
    // The bigger the weight, the higher the record
    $weight = 0;
    // Iterate through search terms
    foreach($search_terms as $searchTerm) {
        // Iterate through properties (address1, address2...)
        foreach($props as $prop) { 
            // Use strpos instead of %value% (cause php)
            if(strpos($i->{$prop}, $searchTerm) !== false)
                $weight += 1; // Increase weight if the search term is found
        }
    }

    return $weight;
});

$properties = $properties->values()->all();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Koneksi Propel Aman, MySQL jarak jauh

  2. Bagaimana menentukan mana yang lebih efektif:DISTINCT atau WHERE EXIST?

  3. MySQL group_concat dengan pilih di dalam pilih

  4. Mungkinkah menggunakan banyak/pernyataan MySQLi bersarang?

  5. bagaimana memahami tidak dapat menghubungkan pesan kesalahan mysql?