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

Laravel:एकाधिक पिवट तालिका संबंधों का उपयोग कैसे करें

यह सेटअप आपको जाना चाहिए। मैंने नामकरण को यथासंभव सरल रखने की कोशिश की।

users
    id
    username

challenge_user
    user_id
    challenge_id

challenges
    id
    name
    topic_id      
    category_id

topics
    id
    name

categories
    id
    name

अपने वाक्पटु मॉडलों को परिभाषित करना

class User extends Eloquent {
    public function challenges() {
        return $this->belongsToMany('Challenge');
    }
}

class Challenge extends Eloquent {
    public function users() {
        return $this->belongsToMany('User');
    }
    public function topic() {
        return $this->belongsTo('Topic');
    }
    public function category() {
        return $this->belongsTo('Category');
    }
}

class Topic extends Eloquent {
    public function challenges() {
        return $this->hasMany('Challenge');
    }
}

class Category extends Eloquent {
    public function challenges() {
        return $this->hasMany('Challenge');
    }
}

अपने सुवक्ता मॉडल का उपयोग करना ... आप क्या कर सकते हैं इसके कुछ उदाहरण।

// Collection of all Challenges by Topic name
Topic::with('challenges')->whereName($topic_name)->first()->challenges;

// Collection of all Challenges by Category name
Category::with('challenges')->whereName($category_name)->first()->challenges;

// Collection of all Users by Challenge id
Challenge::with('users')->find($challenge_id)->users;

// Collection of Users with atleast 2 Challenges
User::has('challenges', '>', 1)->get();

// Attach Challenge to User
$user = User::find($id);
$user->challenges()->attach($challenge_id);

// Assign a Topic to a Challenge
$challenge = Challenge::find($challenge_id);
$topic     = Topic::find($topic_id);

$challenge->topic()->associate($topic);
$challenge->save();

संदर्भ और सुझाए गए पठन:

लारावेल एलोक्वेंट रिलेशनशिप्स belongsTo belongsToMany hasMany

संबंधों की पूछताछ Model::has()

ईजर लोड हो रहा है Model::with()

संबंधों तक पहुंचने के लिए गतिशील गुण $model->relationship . का समाधान करें

संबंधित मॉडल सम्मिलित करना attach() associate()

क्वेरी स्कोप

पिवट टेबल के साथ काम करना यदि आपको पिवट तालिका से अतिरिक्त डेटा प्राप्त करने की आवश्यकता है।




  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. PHP में लॉगिन पेज में SQL इंजेक्शन को रोकना

  3. PHP-MySQL-MySQL पूर्णांक फ़ील्ड को सुरक्षित रूप से कैसे बढ़ाएँ?

  4. CentOS7 में, MySQL प्रारंभ नहीं कर सकता

  5. जावा में SQL अद्यतन विवरण से प्रभावित पंक्तियों की संख्या लौटाएं