laravel 5.7中雄辩的一对多关系

laravel 5.7中雄辩的一对多关系,laravel,laravel-5,eloquent,laravel-5.7,Laravel,Laravel 5,Eloquent,Laravel 5.7,我正试图获取国家名称的数据,所以 我有两个模型 1用户模型 用户: class Users extends Model { protected $fillable = ['fname','lname','email','password','address','state','city']; public function address1() { return $this->hasOne('App\Addresses'); } }

我正试图获取国家名称的数据,所以

我有两个模型

1用户模型

用户:

class Users extends Model
{


    protected $fillable = ['fname','lname','email','password','address','state','city'];


    public function address1()
    {
        return $this->hasOne('App\Addresses');
    }
}
2地址模型

地址:

class addresses extends Model
{
    protected $fillable = ['user_id','country'];

    public function user()
    {
        return  $this->belongTo('App\users');
    }
}
现在我得到了输出-这是一个错误:

SQLSTATE[42S22]:未找到列:1054未知列 where子句中的“addresses.users\u id”SQL:select*from addresses 其中addresses.users\u id=5,addresses.users\u id不为 null和addresses.id=2限制1视图: /Applications/XAMPP/xamppfiles/htdocs/demo/resources/views/profiles.blade.php


请解决我的问题。

首先,错误非常清楚地说明问题所在-您的地址表中没有users\u id列

你还没有展示你是如何利用这些关系的,但我相信问题就在这里:

 public function user()
 {
    return $this->belongTo('App\users');
 }
使用不符合Laravel约定的模型名称时,应传递外键列名,例如:

 public function user()
 {
    return $this->belongTo('App\users', 'user_id');
 }
这里的user_id只是一个例子。我不知道表中定义与用户关系的真正列名是什么

但是,我强烈建议您使用Laravel和PHP约定:

类应该以大写字母开头,所以它应该是地址,而不是地址,记住文件名的大小写完全相同,例如addresses.php` 模型应该是单数名词,所以它应该是地址或用户,而不是地址或用户。再次确保,如果您决定更改它,您还可以更改文件名
那么,你读过那个错误消息了吗?它非常清楚地告诉你问题是什么……没有从数据库中获取数据这是什么意思?您是否已阅读错误消息?请遵循命名约定!Laravel试图从关联模型的名称猜出外键,由于您的模型是Users而不是User,因此它试图查找Users\u id而不是正确的Users\u id。非常感谢。。这是代码工作。。。再次重申: