मैं 'उपयोगकर्ता' तालिका और 'उपयोगकर्ता_प्रोफाइल' तालिका के बीच एक सुंदर सीधा संबंध बनाने का प्रयास कर रहा हूं। प्रत्येक उपयोगकर्ता के पास user_profile है, इसलिए यह एक-एक-एक-एक है। डॉक्स पाया @http://four.laravel.com/docs/eloquent#one-to-one मैं अपने उपयोगकर्ता मॉडल के लिए निम्न समारोह जोड़ लिया है के अनुसार:लैरवेल 4 एलोक्वेंट ओआरएम गतिशील गुणों के माध्यम से एक-से-एक संबंध तक पहुंच
public function user()
{
return $this->belongsTo('User');
}
मैं से उपयोग करने के लिए कोशिश कर रहा हूँ:
public function user_profile()
{
return $this->hasOne('User_profile');
}
और इस रिश्ते मेरी User_profile मॉडल में परिभाषित किया गया है इस तरह नियंत्रक:
// Get current user
$user = User::find(Auth::user()->id);
$profile = $user->user_profile;
print_r($user);
print_r($profile);
echo "User's name is: " . $user->user_profile->first_name . ' ' . $user->user_profile->last_name;
दुर्भाग्य से मुद्रण $ उपयोगकर्ता बाहर उपयोगकर्ता मॉडल क्षेत्रों ठीक प्रिंट, लेकिन एक रिश्ते के किसी भी ट्रेस प्रदर्शित नहीं करता है; $ प्रोफाइल खाली है। 'रिलेशनशिप' सरणी भी खाली है, जिसे मैं अनुमान लगा रहा हूं शायद भरा जाना चाहिए।
मैं के रूप में यहाँ का सुझाव दिया http://four.laravel.com/docs/eloquent#dynamic-properties
अन्यथा अगर मैं बस जाओ 'गतिशील गुण' का उपयोग करने की कोशिश कर रहा हूँ:
echo "User's name is: " . $user->user_profile()->first()->first_name . ' ' . $user->user_profile()->first()->last_name;
यह काम करता है .. लेकिन मैं वास्तव में ऐसा करने के लिए होने की तरह नहीं है ।
कोई सुझाव?
मैं L4 प्यार लेकिन इस पहलू से लोगों को बहुत बाहर पकड़ने चाहिए। मुझे एक ही समस्या थी, लेकिन मेरे मामले में यह उत्पाद प्रकारों के साथ करना था और यह पता चला कि मुझे 'producttype()' के बजाय रिलेशनशिप विधि 'productType() 'नाम देना था। पोस्ट करने के लिए धन्यवाद और उम्मीद है कि यह कुछ अन्य लोगों की मदद करता है। – JamesG
हां, साथ ही यह कष्टप्रद है कि नामांकन टेबल और उनके संबंधित तालिकाओं जैसे ऑब्जेक्ट्स के लिए होता है, लेकिन आप तालिका फ़ील्ड के लिए अंडरस्कोर नामकरण पर वापस जाते हैं, यानी first_name। यह असंगतता हल्के से परेशान है। – John