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

मुख्य MySQL परिणाम के साथ पिवट मान प्राप्त करने के लिए Laravel 5.5 पिवट में शामिल हों

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

यदि आप पिवट टेबल का उपयोग करके डेटा प्राप्त करना चाहते हैं, तो यहां उदाहरण है
उपयोगकर्ता मॉडल:

class User extends Authenticatable
{
    use Notifiable;


    protected $fillable = [
        'name', 'email', 'username', 'password',
    ];


    protected $hidden = [
        'password', 'remember_token',
    ];


    public function groups()
    {
        return $this->belongsToMany('App\Group', 'user_groups', 
          'user_id', 'group_id');
    }
    public function scopeDetail($query)
    {
        return $query->with('groups');
    }
}

समूह मॉडल:

class Group extends Model
{
    protected $fillable = [
        'dn', 'cn', 'description',
    ];
}

उपरोक्त उपयोगकर्ता मॉडल में, देखें return $this->belongsToMany('App\Group','user_groups', 'user_id', 'group_id'); , जहां user_groups मेरी पिवट तालिका है जो उपयोगकर्ताओं और समूह के बीच संबंध को परिभाषित करती है। group_id और user_id पिवट तालिका में फ़ील्ड हैं।

अब उपरोक्त आर्किटेक्चर का उपयोग करके डेटा (नियंत्रक पर) लाया जा रहा है:

User::where(.....)->detail()->first();

जहां detail() क्या मेरा दायरा उपयोगकर्ता मॉडल में scopeDetail . के रूप में परिभाषित किया गया है? . नोट:scope उपसर्ग संलग्न करना होगा। यह आपको उपयोगकर्ता को उन सभी समूहों के साथ देगा जो उपयोगकर्ता सरणी में हैं, इसलिए जब भी आप JSON में अपना डेटा देखते हैं तो आप संरचना को उचित तरीके से देख सकते हैं।

उपरोक्त विधि का उपयोग करते हुए, मेरे उपयोगकर्ता ऑब्जेक्ट में वे सभी समूह हैं जिनसे उपयोगकर्ता संबंधित है।

अतिरिक्त
यदि आपका उपयोगकर्ता मॉडल (उपयोगकर्ता) अन्य मॉडलों से भी संबंधित है तो आप मॉडल वर्ग के दायरे को परिभाषित करके उन सभी को शामिल कर सकते हैं

............
//..............
    public function profile()
    {
        return $this->belongsToMany('App\Profile', 'user_id');
    }
    public function data1()
    {
        return $this->belongsToMany('App\Data1', 'user_id');
    }
    public function groups()
    {
        return $this->belongsToMany('App\Group', 'user_groups', 
          'user_id', 'group_id');
    }
    //Defining query scope................
    public function scopeDetail($query)
    {
        return $query->with('groups','profile','data1');
        //to fetch user with this scope use User::where(.....)->detail()->get(); notice there is not scope prefix while using the scope
    }
........
........



  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. कोडनिर्देशक सक्रिय रिकॉर्ड को LIMIT क्लॉज के बिना क्वेरी और क्वेरी मिलती है

  3. आप एक MySQL कॉलम के लिए संयोजन प्रकार कैसे बदलते हैं?

  4. MySQL में जीरोफिल का क्या फायदा है?

  5. मैं MySQL Connector/J . के लिए स्रोत कहां से डाउनलोड कर सकता हूं?