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

DB::raw अभिव्यक्तियों का उपयोग करके POINT/POLYGON आदि के साथ Laravel मॉडल

हमने अब अपने बेस मॉडल को निम्नलिखित कार्यात्मकता के साथ विस्तारित करके सभी मॉडलों के लिए इसे सामान्य रूप से हल कर लिया है:

  • हम ज्यामितीय डेटा रखने वाली विशेषताओं की एक सरणी को परिभाषित करते हैं।
  • अगर हम इसे टेक्स्ट के रूप में ऑटो-लोड करना चाहते हैं, तो हम प्रति-मॉडल-आधार पर निर्णय लेते हैं।
  • डेटाबेस से टेक्स्ट के रूप में ज्यामिति विशेषताओं का चयन करने के लिए हम डिफ़ॉल्ट क्वेरी बिल्डर को बदलते हैं।

यहां बेस मॉडल का एक अंश दिया गया है जिसका हम अब उपयोग करते हैं:

/**
 * The attributes that hold geometrical data.
 *
 * @var array
 */
protected $geometry = array();

/**
 * Select geometrical attributes as text from database.
 *
 * @var bool
 */
protected $geometryAsText = false;

/**
 * Get a new query builder for the model's table.
 * Manipulate in case we need to convert geometrical fields to text.
 *
 * @param  bool  $excludeDeleted
 * @return \Illuminate\Database\Eloquent\Builder
 */
public function newQuery($excludeDeleted = true)
{
    if (!empty($this->geometry) && $this->geometryAsText === true)
    {
        $raw = '';
        foreach ($this->geometry as $column)
        {
            $raw .= 'AsText(`' . $this->table . '`.`' . $column . '`) as `' . $column . '`, ';
        }
        $raw = substr($raw, 0, -2);
        return parent::newQuery($excludeDeleted)->addSelect('*', DB::raw($raw));
    }
    return parent::newQuery($excludeDeleted);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या मैं डिफ़ॉल्ट पेजिनेशन को ओवरराइड किए बिना कस्टम क्वेरी को पेजिनेट कर सकता हूं?

  2. अभी सेट करें () डेटाटाइम डेटाटाइप के लिए डिफ़ॉल्ट मान के रूप में?

  3. समय कम करने और डिस्क पर tmp लिखने के लिए mysql को फिर से लिखना

  4. Mysql तर्क के आधार पर संग्रहीत प्रक्रिया में गतिशील रूप से क्वेरी स्ट्रिंग का निर्माण करता है

  5. MySQL दृश्य प्रदर्शन