laravel MyModelClass在1:1关系中找不到

时间:2014-11-21 14:20:12

标签: php laravel

我的应用程序中有UserProfile类,关系为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

先谢谢。

2 个答案:

答案 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');
    }
}