Relation ship circle

我想知道我是否可以避免这种情况下的循环关系.

Explanation: posts表具有forign key city_id来指定帖子(产品)的位置,并且用户还具有city_id来指定他/她居住的地方.现在用户可以拥有一个"a"城市并创建一个具有"b"城市的帖子,这对我来说是逻辑,因为用户可以在度假,也可以在远离他/她自己城市的某个地方.对于用户来说,默认情况下,当他/她首次登录时,城市会设置为空,但他/她可以将一个城市分配给他/她的个人资料.该职位必须有一个城市位置.

您认为有办法避免这种情况下的循环关系吗?

我试图删除循环关系,因为在大多数情况下这是一种不好的做法,但在我的情况下,我似乎无法删除它,因为与概念和我的网站的运作方式相比,它没有意义

推荐答案

这里不存在 struct 性循环依赖性问题,因为0..多样性允许打破循环:

  • 职位与城市相关
  • 用户可以与城市关联
  • 帖子还与用户关联
  • 没有限制,因此Post.User.City和Post.City在任何时刻都可能不同

这是正常的关联,就像您在现实生活中会发现更多关联一样,其中不止一条路径可以连接两个实例.

问题更多的是行为性的:如何初始化用户的城市(多重性告诉我们这是可选的)以及如果用户没有城市,如何确定帖子的城市.地理定位可以是一个答案.另一个限制是要求与帖子关联的用户在创建帖子时必须具有城市.所以更多的是关于澄清需求.

Laravel相关问答推荐

警告:构建Reaction App(VITE)后无法解码下载的字体警告

无法在 Laravel 项目中安装 @vitejs/plugin-vue

RouteCollection.php 第 219 行中的 MethodNotAllowedHttpException

安卓 retrofit |发布自定义对象(将 json 发送到服务器)

Laravel + SQLite = SQLSTATE[HY000]一般错误:8次try 写入只读数据库

如何在 Laravel 中显示渲染时间/页面加载时间?

Laravel 4 如何监听模型事件?

Laravel transformer vs resource

如何使用 Laravel 模型访问数据库视图?

如何在使用 Laravel 在控制器中发送邮件之前更改邮件配置?

Laravel 4 定义 RESTful 控制器

Laravel 表 * 没有名为 * 的列

laravel 5 中的登录事件处理

使用 Queue::fake() 测试监听器

如何在 Eloquent Orm 中实现自引用(parent_id)模型

Laravel Eloquent 模型属性

Laravel 5 默认注册后如何发送邮件?

在 laravel Passport 客户端应用程序中使用访问令牌获取用户数据

如何从 laravel 5.1 中数据库表的 created_at 属性中 Select 年份和月份?

Laravel Eager加载与显式连接