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

एसक्यूएल/लारवेल - मेरी क्वेरी एक खाली संग्रह क्यों लौटाती है?

यह कुछ "मुश्किल" है। phpmyadmin में आप जो क्वेरी निष्पादित कर रहे हैं, वह वास्तव में सही है। हालांकि, लारवेल where() . का उपयोग करता है और on() अलग तरह से।

where() का उपयोग करें एक मान के साथ और on() कॉलम के साथ काम करते समय।

$times = Time::join(\DB::raw('(SELECT `ath_id`, `stroke_id`, MIN(time) AS time FROM times GROUP BY ath_id, stroke_id) b'), function($join) {
                 $join->on('times.ath_id', '=', 'b.ath_id')
                      ->on('times.stroke_id', '=', 'b.stroke_id')
                      ->on('times.time', '=', 'b.time');
             })
             ->where('times.ath_id', '=', $id)
             ->orderBy('times.stroke_id', 'ASC')
             ->orderBy('times.date', 'DESC');

दस्तावेज़:https://laravel.com/docs/5.4/queries , अनुभाग (CTRL+F):उन्नत जुड़ाव

थोड़ा और स्पष्ट करने के लिए:

$join->on('times.ath_id', '=', 'b.auth_id')->where('times.stroke_id', '=','b.stroke_id');

में परिणाम:

JOIN on `times`.`ath_id` = `b`.`auth_id` WHERE `times`.`stroke_id` = 'b.stroke_id' -- AS STRING

भ्रम तब हुआ जब toSql() आपकी क्वेरी वापस कर दी और आपने मान लिया कि Laravel जानता है कि:

['b.stroke_id', 'b.time', '4298584']

पहले दो बाइंड बाइंडिंग कॉलम हैं। लेकिन where() सोचता है कि वे सिर्फ तार।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैसकल वर्चर अद्वितीय कॉलम वर्कर (255) बनाम वर्चर (50)

  2. एसक्यूएल मानक यूपीएसईआरटी कॉल

  3. मैं MySQL को लौटाए गए सरणी में प्रत्येक कॉलम की प्रविष्टि को डुप्लिकेट करने से कैसे रोकूं?

  4. mysql - दिए गए कॉलम नंबर की तालिका से मानों का चयन करना

  5. अनुपलब्ध/अनुपलब्ध निर्भरता वाली सेवाएँ