我試圖在'用戶'表和'User_profiles'表之間建立一個非常直接的關係。每個用戶都有一個user_profile,因此它是一個簡單的一對一的。由於每@http://four.laravel.com/docs/eloquent#one-to-one我已經添加了以下功能到我的用戶模型中發現的文檔:Laravel 4雄辯的ORM通過動態屬性訪問一對一的關係
public function user_profile()
{
return $this->hasOne('User_profile');
}
,這是我的User_profile模型中定義的關係:我從試圖訪問
public function user()
{
return $this->belongsTo('User');
}
像這樣的控制器:
// 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;
不幸的是,打印$ user打印出用戶模型字段就好,但沒有顯示關係的任何痕跡; $配置文件是空的。 '關係'數組也是空的,我猜可能應該填充。
我試圖用「動態屬性」這裏建議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