我试图在'用户'表和'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