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

डिस्टेंस हैसमैनीथ्रू

मुझे नहीं लगता कि लारवेल में ऐसी कोई विधि है। आपको अपनी कस्टम क्वेरी बनानी होगी। यह कस्टम क्वेरी बहुत महंगी हो सकती है क्योंकि कई प्रश्नों को निष्पादित किया जाएगा। इस प्रकार, इसके लिए इष्टतम समाधान, मेरे अनुसार, उपयोगकर्ता और अवसर को एक विदेशी कुंजी के साथ जोड़ना है।

हालांकि, यदि आप उपयोगकर्ता और अवसर को किसी विदेशी कुंजी से लिंक नहीं करना चाहते हैं, तो आप इसे संभालने के लिए एक कस्टम क्वेरी बना सकते हैं। अवसर और क्लाइंट मॉडल के बीच बस "hasManyThrough" संबंध जोड़ें, जैसे,

    <?php
    class Client extends Eloquent{
        public function store(){
            return $this->hasMany('Store');
        }
        public function user(){
            return $this->belongsTo('User');
        }

        public function opportunity(){
            return $this->hasManyThrough('Opportunity', 'Store');
        }
    }

फिर उपयोगकर्ता मॉडल में एक स्थिर फ़ंक्शन बनाएं।

    <?php

    class User extends Eloquent implements UserInterface, RemindableInterface {

        use UserTrait, RemindableTrait;

        public function client(){
            return $this->hasMany('Client');
        }
        public function store(){
            return $this->hasManyThrough('Store', 'Client');
        }

        public static function getOpportunityOfUser($userId)
        {
             $clients = User::find($userId)->client;

            foreach ($clients as $client) {
                $opportunities[] = Client::find($client->id)->opportunity;
            }

            return $opportunities;
        }
    }

अब आप एक बार में उपयोगकर्ता को वास्तविक अवसर प्राप्त कर सकते हैं, जैसे,

    Route::get('/', function()
    {   
         return $usersOpportunities = User::getOpportunityOfUser(1);
    });

यह आईडी '1' के साथ उपयोगकर्ता से संबंधित सभी ग्राहकों के सभी अवसर लौटाएगा।



  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. गतिशील रूप से mysql बनाना क्वेरी का चयन करें

  3. डेटाबेस से पढ़े गए विकल्प मेनू का चयन करें और इसके मूल्यों का उपयोग करें

  4. एडब्ल्यूएस ईकेएस में तैनात एक MySQL डेटाबेस को प्रारंभ करना

  5. डेल्टा-आयात डेटा एकत्र करता है लेकिन सोलर इंडेक्स को अपडेट नहीं करता है