我的应用程序中有User
和Profile
类,关系为1:1。
在我的ProfileController@show
内部,我可以为每个人实例化和构建查询,但是这两行:
$userProfile=$profile->with('user')->where('id',1)->firstOrFail();
$userProfile=$user->with('profile')->where('id',3)->firstOrFail();
第一个发送致命错误异常,并显示以下消息:"未找到类用户" ,第二个消息为" Class Profile找不到"
我也尝试了外观和不同的构建查询方式,但它没有工作。
根据这个question,我认为我的关系有问题。我明确地传递了foreign_key,但它没有工作。
以下是一些细节:
用户类:
class User extends \Eloquent implements UserInterface, RemindableInterface
{
public function profile()
{
return $this->hasOne('Profile', 'id');
}
}
个人资料类
class Profile extends \Eloquent
{
public function user()
{
return $this->belongsTo('User', 'id');
}
}
数据库架构: 表"用户"
id
password
email
username
表"个人资料"
id
user_id
about
先谢谢。
答案 0 :(得分:2)
这个怎么样?
class User extends \Eloquent implements UserInterface, RemindableInterface
{
public function profile()
{
return $this->hasOne('Profile', 'user_id');
}
}
它不应该是外键吗? http://laravel.com/api/4.2/Illuminate/Database/Eloquent/Relations/HasOne.html
答案 1 :(得分:2)
如果您的Model具有命名空间,则需要将完整的命名空间类作为参数插入。否则Eloquent不知道在哪里找到班级。
或者你需要在app / config / app.php
中将模型添加到你的类图中class User extends \Eloquent implements UserInterface, RemindableInterface
{
public function profile()
{
return $this->hasOne('\Path\TO\Model\Profile', 'id');
}
}