【发布时间】:2018-10-20 19:35:32
【问题描述】:
非常愚蠢的情况,关键是我无法更改数据库架构,因为它是一个正在运行的电子商务业务,拥有超过 100 万活跃用户。
这是我的情况。
表用户: 表格存储:
两者都有相同的主键,这意味着我们可以调用一对一的关系。 但是现在我必须创建属于许多关系表单 Store 到 User。
存储表有两列
- 蛞蝓
- 父ID
现在我需要让所有用户都拥有大量的商店
所以我的查询是
select * from users where id IN (select id from store where slug = ?);
如何在这种情况下创建关系。
【问题讨论】:
-
等等,用户和商店的id是一样的..?在覆盖键时使用
HasOne关系怎么样?喜欢$userModel->HasOne('store', 'id', 'id')。但是,where slug = ?在关系定义上有点困难,你可以赌User::with('store', function($q){ $q->whereNotNull('slug') })->get()。我可以这样想,但我已经好几年没有摆弄 laravel >. -
nops 情况是用户将在商店中拥有并且商店可以拥有许多用户,但识别键现在是商店 slug 而不是 id。如果我要对用户 > 商店执行一对一的关系,那么我需要检查商店的 parentId,如果商店有父 ID,那么目标商店将具有与商店相同的 slug,但父 id 为空。
-
这有意义吗?
-
嗨@MoeenBasra,我认为这个问题并不完全清楚。我对用户和商店的 ID 有同样的问题,您的回答让我无法更清楚。也许您可以添加您的数据库图并说明:(1)什么是当前行为和(2)什么是期望行为。我要么看到更新 db 模式会出现什么问题,即使它是一个 100 万用户的 prd 应用程序。如果您对此有实际需求,这不是微不足道的,但也不是不可能的。
-
我正在添加一个小架构 sn-p 请再看看