ठीक है, आपका डेटाबेस और आपकी मॉडल परिभाषाएँ ठीक दिखती हैं, साथ ही किसी लेख में श्रेणी जोड़ने के लिए आपका कोड भी। हालांकि, किसी लेख को किसी श्रेणी में जोड़ने के लिए आपका कोड थोड़ा हटकर है।
सबसे पहले, कोई $category->articles()
नहीं है तरीका। संबंधित वस्तुओं तक पहुँचने के लिए, आप अपने परिभाषित संबंध का उपयोग करते हैं:$category->categorizable()
. साथ ही, संबंध विशेषता, $category->categorizable
इसमें लोडेड संबंधित ऑब्जेक्ट होगा, और यह स्वचालित रूप से या तो एक Article
होगा या एक Service
वस्तु, जो संबंधित है उसके आधार पर।
दूसरा, यह morphTo()
है रिश्ते का पक्ष; यह belongsTo()
. जैसा व्यवहार करता है , और इसी तरह के तरीके हैं। उदाहरण के लिए, कोई save()
नहीं है विधि, लेकिन आपके पास associate()
. है तरीका। इसका मतलब है कि आपको पहले अपना लेख बनाना होगा, और फिर उसे श्रेणी के साथ जोड़ना होगा। साथ ही, associate()
स्वचालित रूप से सहेजता नहीं है, इसलिए आपको उसे भी कॉल करना होगा।
$article = new App\Article();
$article->title = 'This is an article title.';
$article->save();
$category = App\Category::find(1);
$category->categorizable()->associate($article);
$category->save();
// showing use of relationship attribute
$related = $category->categorizable;
echo get_class($related);