Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

लार्वेल 5 में रिश्ते के कॉलम पर पेजिनेट के साथ 'होने' का उपयोग कैसे करें

अपडेट करें

अगर आप paginate() . का इस्तेमाल करते हैं आपकी क्वेरी के साथ लार्वा संभावित मैचों की कुल संख्या की गणना करने के लिए निम्नलिखित SQL कोड को निष्पादित करने का प्रयास करेगा:

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

जैसा कि आप देख सकते हैं, ऐसा कोई कॉलम या उपनाम नहीं है distance इस प्रश्न में।

विकल्प 2 मेरे मूल उत्तर में उस समस्या को भी ठीक कर देगा।

मूल उत्तर

वह सीम एक MySQL- सख्त-मोड समस्या है। यदि आप लार्वा 5.3 का उपयोग करते हैं तो सख्त मोड प्रति डिफ़ॉल्ट सक्षम है। आपके पास दो विकल्प हैं:

विकल्प 1:MySQL के लिए config/database.php . में सख्त मोड अक्षम करें

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

विकल्प 2: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');

दस्तावेज़ीकरण:

सर्वर SQL मोड - 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. mysql सॉर्ट स्ट्रिंग नंबर

  2. JSON_CONTAINS () MySQL में उदाहरण

  3. MySQL में एक टेबल या कॉलम नाम के रूप में आरक्षित शब्द का उपयोग करने के कारण सिंटैक्स त्रुटि

  4. अनुकूलन द्वारा क्रम से mysql गिनती समूह

  5. जावा प्रोग्रामिंग का उपयोग करके mysql डेटाबेस को प्रारंभ या बंद करें