gpt4 book ai didi

php - 中间表的 Eloquent 模型关系

转载 作者:行者123 更新时间:2023-11-29 11:34:25 25 4
gpt4 key购买 nike

考虑以下表结构:

user table
id
name
lang_region_id

lang_region table
id
lang_id
region_id

lang table
id
name

region table
id
name


Laravel框架还很陌生,但是尝试设置Eloquent模型和与现有数据库的关系。我想建立我的用户模型与lang和region模型之间的关系。 lang_region表定义了可用的语言和区域组合,然后我们可以将每个用户链接到有效组合。

我已经多次阅读Laravel文档以寻找正确的关系类型,但似乎“多对多”和“具有许多直通”关系很紧密,但是由于中间表中未使用user.id,所以我可能不满意运气

对这个业余问题很抱歉,但是一般来说,他们只是习惯了Laravel和ORM。

最佳答案

我将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');
}
}

关于php - 中间表的 Eloquent 模型关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36850886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com