-1

我正在尝试获取国名的数据,所以,

我有两个模型

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 where addresses. users_id= 5 and addresses. users_idis not null and addresses. id= 2 limit 1)(查看:/Applications/ XAMPP/xamppfiles/htdocs/demo/resources/views/profiles.blade.php)

请解决我的问题。

4

1 回答 1

1

首先,错误非常清楚地说明了问题所在 - 您的表中没有users_idaddresses

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

 public function user()
 {
    return $this->belongTo('App\users');
 }

当您使用不遵循 Laravel 约定的模型名称时,您应该传递外键列名称,例如:

 public function user()
 {
    return $this->belongTo('App\users', 'user_id');
 }

这里user_id只是一个例子。我不知道表中定义与用户关系的真实列名是什么。

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

  1. 类应该以大写字母开头,所以addresses应该是相当的Addresses(记住文件名的大小写完全相同,例如 Addresses.php`
  2. 模型应该是单数名词,因此应该是地址或用户而不是地址或用户(再次确保在您决定更改它的情况下也更改文件名)
于 2018-10-05T16:46:09.467 回答