Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.4雄辩的关系问题_Php_Laravel 5_Relationship_Laravel Eloquent - Fatal编程技术网

Php Laravel 5.4雄辩的关系问题

Php Laravel 5.4雄辩的关系问题,php,laravel-5,relationship,laravel-eloquent,Php,Laravel 5,Relationship,Laravel Eloquent,我需要澄清我对有说服力的人际关系的怀疑。我有两个模型用户(与Laravel一起提供),另一个是我创建的角色。 在迁移中,我添加了role_id作为附加列,因为我希望每个用户都必须有一个角色。现在,我希望根据用户的id检索用户角色。因此,我在用户模型中创建了一个名为roles的公共函数 public function roles(){ return $this->belongsTo(Role::class); } 现在,当我尝试像这样运行查询时 App\

我需要澄清我对有说服力的人际关系的怀疑。我有两个模型用户(与Laravel一起提供),另一个是我创建的角色。 在迁移中,我添加了role_id作为附加列,因为我希望每个用户都必须有一个角色。现在,我希望根据用户的id检索用户角色。因此,我在用户模型中创建了一个名为roles的公共函数

    public function roles(){
        return $this->belongsTo(Role::class);
    }
现在,当我尝试像这样运行查询时

  App\User::find(1)->roles;
它不会返回任何结果,只是空屏幕,但当我将其更改为

    public function role(){
        return $this->belongsTo(Role::class);
    }
然后我运行代码

  App\User::find(1)->role;
现在,它返回id为1的用户具有适当角色的确切行。让人困惑的是,为什么roles()函数不起作用,而role()函数起作用

对不起,如果这个问题已经发布,您可以将我重定向到那个问题


谢谢大家!

您必须指定外键

public function roles()
{
    return $this->belongsTo(Role::class, 'role_id');
}

但是,称之为role()更准确,因为您假设一个用户只能有一个角色。

是的,我知道每个用户都有一个角色,但我的问题是,为什么roles()不起作用,但role()在您回答并在roles()函数中加入第二个参数role\u id后也起作用。但这背后的逻辑是什么?雄辩的,默认情况下会寻找fk:roles\u id