यह सेटअप आपको जाना चाहिए। मैंने नामकरण को यथासंभव सरल रखने की कोशिश की।
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()
पिवट टेबल के साथ काम करना यदि आपको पिवट तालिका से अतिरिक्त डेटा प्राप्त करने की आवश्यकता है।