PHP Academy · पाठ

Eloquent संबंध

hasOne, hasMany, belongsTo और कई-से-कई संबंध परिभाषित करें

पाठ 3, कुल 4 में से13 चरण

Eloquent संबंध, CoddyKit पर PHP Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह PHP Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

संबंध क्यों

Eloquent संबंध आपको कच्चे SQL JOIN के बजाय स्पष्ट PHP का उपयोग करके संबंधित मॉडलों पर क्वेरी करने देते हैं।

hasOne

एक User का एक Profile होता है। इसे स्वामी मॉडल में परिभाषित करें।

<?php
class User extends Model {
    public function profile(): \Illuminate\Database\Eloquent\Relations\HasOne {
        return $this->hasOne(Profile::class);
    }
}
// Access:
$profile = $user->profile;

belongsTo

एक Profile किसी User से संबंधित होता है। इसे उस मॉडल में परिभाषित करें जिसमें विदेशी कुंजी होती है।

<?php
class Profile extends Model {
    public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo {
        return $this->belongsTo(User::class);
    }
}
// Access:
$user = $profile->user;

hasMany

एक User के कई Post होते हैं। यह पैरेंट पक्ष से एक-से-अनेक संबंध है।

<?php
class User extends Model {
    public function posts(): \Illuminate\Database\Eloquent\Relations\HasMany {
        return $this->hasMany(Post::class);
    }
}
// Access:
$posts = $user->posts; // Collection

belongsTo (अनेक पक्ष)

प्रत्येक Post किसी User से संबंधित होता है।

<?php
class Post extends Model {
    public function author(): \Illuminate\Database\Eloquent\Relations\BelongsTo {
        return $this->belongsTo(User::class, "user_id");
    }
}

अनेक-से-अनेक (belongsToMany)

एक Post के कई टैग होते हैं और एक टैग कई Post से संबंधित होता है — इन्हें पिवट तालिका के माध्यम से जोड़ा जाता है।

<?php
class Post extends Model {
    public function tags() {
        return $this->belongsToMany(Tag::class);
    }
}
// Pivot table: post_tag (post_id, tag_id)
$tags = $post->tags;
$post->tags()->attach($tagId);
$post->tags()->detach($tagId);
$post->tags()->sync([1, 2, 3]);

hasManyThrough

दूर से संबंधित मॉडलों तक पहुँचें: एक Country के कई Post, User के माध्यम से होते हैं।

<?php
class Country extends Model {
    public function posts() {
        return $this->hasManyThrough(Post::class, User::class);
    }
}

बहुरूपी संबंध

एक Comment मॉडल जो बहुरूपी संबंधों का उपयोग करके किसी Post या वीडियो से संबंधित हो सकता है।

<?php
class Comment extends Model {
    public function commentable() {
        return $this->morphTo();
    }
}
class Post extends Model {
    public function comments() {
        return $this->morphMany(Comment::class, "commentable");
    }
}

संबंध के अस्तित्व की क्वेरी

किसी संबंध के अस्तित्व के आधार पर मॉडलों पर क्वेरी करें।

<?php
// Posts that have at least one comment:
$commented = Post::has("comments")->get();
// Posts with >= 3 comments:
$popular = Post::has("comments", ">=", 3)->get();

whereHas

संबंध की शर्तों के आधार पर फ़िल्टर करें।

<?php
$phpPosts = Post::whereHas("tags", function ($q) {
    $q->where("name", "PHP");
})->get();

संबंध विधियाँ बनाम गतिशील प्रॉपर्टी

$user->posts() क्वेरी बिल्डर लौटाता है (आप इसे आगे जोड़ सकते हैं)। $user->posts लोड किया गया संग्रह लौटाता है।

सारांश

संबंधों को hasOne, hasMany, belongsTo, belongsToMany लौटाने वाली विधियों के रूप में परिभाषित करें। उन तक गतिशील प्रॉपर्टी के रूप में पहुँचें या विधि कॉल से क्वेरी जोड़ते जाएँ।

त्वरित जाँच

कौन-सा संबंध प्रकार पिवट तालिका का उपयोग करता है?

शुरुआत निःशुल्क

एआई शिक्षक के साथ PHP सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
49
पाठ
195

अक्सर पूछे जाने वाले प्रश्न

क्या “Eloquent संबंध” पाठ निःशुल्क है?

हाँ—“Eloquent संबंध” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और PHP Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Eloquent संबंध” में मैं क्या सीखूँगा?

hasOne, hasMany, belongsTo और कई-से-कई संबंध परिभाषित करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ PHP Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या PHP Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर PHP Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“Eloquent संबंध” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस PHP Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर PHP Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Eloquent मॉडल और माइग्रेशन
  2. Eloquent के साथ CRUD
  3. Eloquent संबंध
  4. Eager Loading और Query Scopes
← PHP Academy पर वापस जाएँ