私は、lang_regionテーブルをピボットテーブルとそれ自身のモデルを持つ通常のテーブルの両方として使用します。
class LangRegion extends model
{
protected $table = 'lang_region';
public function language()
{
return $this->belongsTo(Language::class, 'lang_id');
}
public function region()
{
return $this->belongsTo(Region::class);
}
public function users()
{
return $this->hasMany(User::class);
}
}
class User extends model
{
protected $table = 'user';
public function langRegion()
{
return $this->belongsTo(LangRegion::class);
}
}
class Language extends model
{
protected $table = 'lang';
public function regions()
{
$this->belongsToMany(Region::class, 'lang_region', 'lang_id', 'region_id');
}
public function users()
{
$this->hasManyThrough(User::class, LangRegion::class, 'lang_id', 'lang_region_id');
}
}
class Region extends model
{
protected $table = 'region';
public function languages()
{
$this->belongsToMany(Language::class, 'lang_region', 'region_id', 'lang_id');
}
public function users()
{
$this->hasManyThrough(User::class, LangRegion::class, 'region_id', 'lang_region_id');
}
}
あなたは、ピボットテーブルを使用する必要があります。それから、Eloquentはうまく動作します – Mojtaba
これは私の初期の考えですが、ピボットテーブルとの間の寛容の関係はピボットテーブルに存在するIDとそのテーブルでピボット回転するテーブルに依存しているようです。 lang_regionテーブルはlang_idとregion_idを含むピボットテーブルですが、私が解決しようとしている問題は、ユーザーテーブルにlang_region行の外部キーがあり、指定されたlang_regionを使ってlangにアクセスしたいということですユーザー。 – JamieA
あなたのデータベース構造は考えていますか? lang_regionテーブルがその部分である理由を説明します。参照する必要がありますか? –