提问者:小点点

拉雷维尔有许多亲密的关系


我一直在与拉威尔的关系斗争。

所以我有3张桌子:

  1. 用户
  2. 国家
  3. 国家/地区/用户

如你所见,关系countries_user。现在每次都会给出错误,比如:

Illumb\Database\QueryException:SQLSTATE[42S22]:未找到列:1054未知列“国家/地区”。“where子句”(SQL:select)中的用户id

  • 国家其中国家user_id=1和国家user_id不是null)在文件C:\xampp\htdocs\gManager\供应商\laravel\框架\src\Illumate\数据库\Connection.php在线671

我知道问题是它在国家而不是countries_user。如何定义我想在哪里搜索关系?

这是我的用户模型

public function countries()
    {
        return $this->hasMany('App\Models\Countries');
    }

还有我的国家模式

public function users()
    {
        return $this->belongsToMany(User::class);
    }

共2个答案

匿名用户

请尝试指定表名

public function users()
{
    return $this->belongsToMany(User::class, 'countries_user');
}

而且逆关系也应该属于同态

public function countries()
{
    return $this->belongsToMany(Countries::class, 'countries_user');
}

并在国家/地区模型上指定表属性

class Countries extends Model
{
    protected $table = 'countries';

    //...
}

匿名用户

国家之间的关系也应该是属性。
而不是

public function countries()
    {
        return $this->hasMany('App\Models\Countries');
    }

public function countries()
    {
        return $this->belongsToMany('App\Models\Countries');
    }