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

कैसे एक सुवक्ता मॉडल में एक जटिल आभासी स्तंभ बनाने के लिए?

समाधान 1:अपने चुने हुए कथनों में फ़ील्ड जोड़ने के लिए वैश्विक दायरे का उपयोग करना

वर्चुअल कॉलम के साथ एक समस्या यह है कि यदि आप इसे नहीं रोकते हैं तो एलोक्वेंट उन्हें अपडेट करने का प्रयास करेगा। आप इसे $fillable सरणी से बाहर कर सकते हैं और वैश्विक दायरे का उपयोग कर सकते हैं अपने मॉडल में वर्चुअल कॉलम जोड़ने के लिए, कुछ इस तरह:

protected static function boot()
{
    parent::boot();

    static::addGlobalScope('next_action', function (Builder $builder) {
        $builder->addSelect(DB::raw('DATE_ADD(updated_at, INTERVAL days DAY) AS next_action'));
    });
}

आपको यह ध्यान रखना होगा कि यह आपके मॉडल को MySQL से जोड़ देगा क्योंकि आपके द्वारा उपयोग किए जा रहे दिनांक फ़ंक्शन SQLite जैसे डेटाबेस में काम नहीं करेंगे।

समाधान 2:MySQL व्यू का उपयोग करना

आम तौर पर मैं क्या करता हूं जब मेरे पास कई परिकलित फ़ील्ड होते हैं जो एक MySQL दृश्य बनाते हैं। अपने इच्छित सभी परिकलित फ़ील्ड के साथ दृश्य बनाएं, फिर आप क्वेरी स्कोप की चिंता किए बिना उस दृश्य के लिए एक नया वाक्पटु मॉडल बना सकते हैं।

एक चेतावनी यह है कि आप निश्चित रूप से इस मॉडल पर बनाने/अपडेट/डिलीट का उपयोग नहीं कर सकते हैं, लेकिन यदि आप केवल प्रदर्शन उद्देश्यों के लिए मॉडल का उपयोग कर रहे हैं, तो यह कोई समस्या नहीं होनी चाहिए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सिरिलिक, AJAX और डेटाबेस

  2. स्ट्रीम से पढ़ना विफल - mysql_native_password त्रुटि

  3. डीबी, पीएचपी और एचटीएमएल डिस्प्ले के लिए जापानी भाषा के लिए सबसे अच्छा कैरेक्टर एन्कोडिंग कौन सा है?

  4. MySQL त्रुटि:एक कुंजी लंबाई के बिना कुंजी विनिर्देश

  5. PHP SQL इंजेक्शन प्रयास का पता लगाता है