我正在尝试获取国家/地区名称的数据,
我有两个型号
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_id'(SQL:select * from addresses其中addresses.users_id = 5且addresses.users_id不为null且addresses.id = 2 limit 1)(查看:/Applications/XAMPP/xamppfiles/htdocs/demo/resources/views/profiles.blade.php)
拜托,解决我的问题 .
1 回答
首先,错误告诉我们问题是什么 - 你的
addresses
表中没有users_id
列 .你还没有展示你是如何尝试使用这些关系的,但我相信问题在于:
当您使用不遵循Laravel约定的模型名称时,您应该传递外键列名称,例如:
这里
user_id
只是一个例子 . 我不知道表中定义与用户关系的真实列名是什么 .但是我强烈建议您使用Laravel和PHP约定:
类应该以大写字母开头,所以代替
addresses
它应该是Addresses
(记得文件名具有完全相同的情况,例如Addresses.php`模型应该是单数名词,因此它应该是地址或用户而不是地址或用户(再次确保如果你决定改变它,你也改变文件名)