一个属于许多企业的职位

dpiehjr4  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(299)

我有一个数据库的结构类似于下面的一个(抱歉,如果图表不完全清楚)。

统计数据、最喜欢的链接和分类链接都与posts表有多态关系。一个企业可以有很多职位,一个职位可以有很多日期。
只有在将来的post dates表中有日期时,post才会出现在站点的前端。
问题是我需要改变这个设计,这样一个帖子就有可能链接到很多企业,这看起来相当简单,但是有很多问题:
每个职位和业务有一个坐标空间栏,这个栏是用于最近的我在网站前端搜索。coords列对于后端的用户是可选的,如果他们没有输入任何内容,系统只会从业务中复制coords。因此,如果我有一个职位链接到许多企业,那么它将需要存储多个坐标集。
此外,我们网站上的用户会希望看到一篇文章在不同领域的表现,这是目前可能的,因为每一篇文章链接到一行的统计数据。如果我有一个帖子链接到许多企业,但是用户只会看到一个总体统计的职位,而不是每个位置。
我们的数据库是非常复杂的,我需要一个方法,使一个职位,以链接到许多业务,这是简单的,不会大幅复杂的事情了。这个系统是建立在拉威尔,所以雄辩,使它更容易建立关系。
我们将非常感谢您的帮助!

hwazgwia

hwazgwia1#

您可以通过将cords列从posts表移动到pivot表来定义post和business之间的许多关系,以便 cords 对于每个 post 以及 business 关系。
后模型

public function businesses(){
    return $this->belongsToMany(Business::class, 'business_post')->withPivot('cords');
}

public function statistic(){
    return $this->hasOne(Statistic::class);
}

public function dates(){
    return $this->hasMany(PostDate::class);
}

pivot表business\u post(id,post\u id,business\u id,cords)
商业模式

public function posts(){
    return $this->belongsToMany(Post::class, 'business_post')->withPivot('cords');
}

获取数据

$posts = Post::with('businesses','statistic','dates')->get();

类似地,您可以为其他模型定义
细节https://laravel.com/docs/5.6/eloquent-relationships#many-对很多人来说

相关问题