चैट के माध्यम से मदद करने के बाद, समस्या यह थी कि group
. नामक एक मौजूदा कॉलम था , और संबंध विधि को group
. भी कहा जाता था , इसलिए संबंध पद्धति पर तालिका स्तंभ मान को प्राथमिकता दी जा रही थी।
संबंध विधि का नाम बदलना, या group
group_id
. जैसा कुछ कॉलम दोनों उपयुक्त समाधान हैं (मेरा सुझाव है कि group_id
मार्ग)।
मूल उत्तर:
आप एक जादुई संपत्ति के माध्यम से समूह को पुनः प्राप्त करते हैं, सीधे विधि से नहीं।
echo User::find(1)->group->name;
यदि आप group()
. को पुनः प्राप्त करते हैं विधि, यह संबंध वस्तु को वापस कर देगा, कोई प्रश्न नहीं करेगा और संबंधित वस्तु को प्राप्त करेगा।
साथ ही, एलोक्वेंट आपके विदेशी कुंजी कॉलम नाम क्या हैं, इस बारे में अनुमान लगाएगा। group
स्वचालित रूप से एक group_id
. में अनुवाद करेगा कॉलम। यदि आपके पास group
. नामक एक मौजूदा कॉलम है , तो आपको इसे अपने रिश्ते में स्पष्ट रूप से निर्दिष्ट करना चाहिए:
public function group ()
{
return $this->belongsTo('Group', 'group');
}
यदि आपको group
प्रॉपर्टी के लिए "गैर-ऑब्जेक्ट की संपत्ति प्राप्त करने का प्रयास" त्रुटि प्राप्त होती है , तो आपका संबंध कोई परिणाम नहीं लौटा रहा है ($user->group
NULL
होगा ) उस समय, आपको यह सुनिश्चित करना चाहिए कि आपका संबंध ठीक से स्थापित है (उदाहरण के लिए सही संबंध का उपयोग करना, हैवन, हैमनी, आदि), और सुनिश्चित करें कि आपके डेटाबेस में वास्तव में संबंधित प्रविष्टि है।