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

Laravel 5 सिंगल रो लिमिट को अपडेट करने से काम नहीं चलता

Oracle के विपरीत या MySQL LIMIT . का उपयोग करके स्टेटमेंट अपडेट करें सीधे PostgreSQL अपडेट स्टेटमेंट पर संभव नहीं है। इसलिए limit(1) . का पालन करें क्वेरी बिल्डर इंस्टेंस के लिए विधि कुछ भी नहीं करती है, क्योंकि compileUpdate Laravel के PostgresGrammar . से विधि क्लास जो क्वेरी को कंपाइल करने के लिए जिम्मेदार है, केवल व्हेयर स्टेटमेंट्स को कंपाइल करती है।

हालाँकि आप एक ऐसी स्थिति से दूर हो सकते हैं जो एक सबक्वेरी का उपयोग करती है जो केवल एक पंक्ति लौटाती है जिसे अपडेट किया जाएगा। कुछ इस तरह काम करना चाहिए:

DB::table("records")->whereIn('id', function ($query) use ($date_now) {
    $query->from('records')
          ->select('id')
          ->where('need_moderate', '=', 'no')
          ->where('locked_per_time', '<', $date_now->format("Y-m-d H:i:s"))
          ->limit(1);
})->update(["locked_per_time" => $locked_per->format("Y-m-d H:i:s"), 'locked_by' => $mdkey]);

whereIn('id', ...) शर्त मानती है कि आपकी तालिका में id . नाम का एक कॉलम है जिसे एक विशिष्ट पहचानकर्ता के रूप में इस्तेमाल किया जा सकता है ताकि यह पहली पंक्ति ढूंढ सके जो सबक्वेरी में आपकी शर्तों से मेल खाती हो।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्वेरी परिणामों को BigQuery से Postgres में निर्यात करें

  2. http://localhost/phppgadmin/ -> 403 निषिद्ध

  3. यूयूआईडी की सरणी पर पोस्टग्रेएसक्यूएल जीआईएन इंडेक्स

  4. पोस्टग्रेज:ज्ञात मानों के साथ स्ट्रिंग कॉलम द्वारा ऑर्डर करें

  5. मैं sqlalchemy के साथ डॉकर के भीतर postgresql का उपयोग कैसे करूं?