laravel 5.7中雄辩的一对多关系
我正试图获取国家名称的数据,所以 我有两个模型 1用户模型 用户: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'); } }
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。非常感谢。。这是代码工作。。。再次重申: