gpt4 book ai didi

php - Laravel 自定义关系

转载 作者:行者123 更新时间:2023-11-29 16:49:18 26 4
gpt4 key购买 nike

enter image description here

非常愚蠢的情况,关键是我无法更改数据库架构,因为它是一个正在运行的电子商务业务,拥有超过 100 万的活跃用户。

这是我的情况。

表用户:表格存储:

两者都有相同的主键,这意味着我们可以称之为一对一的关系。但现在我必须创建属于许多关系形式的存储到用户。

存储表有两列

  1. 蛞蝓
  2. 父ID

现在我需要让所有用户都拥有商店

所以我的查询是

select * from users where id IN (select id from store where slug = ?);

在这种情况下如何创建关系。

最佳答案

嘿,我会尝试尽可能详细地回答。

创建以下关系:

对于商店:

public function users(){
return $this->hasMany(User::class, 'id' ,'slug');
}

对于用户:

public function store(){
return $this->belongsTo(Store::class);
}

创建一个新 Controller 并编写一个新函数,如下所示:

public function getStoreUsers(){
$users = Store::where('slug','yourvalue')->firstOrFail()->users;
return response()->json($users);
}

上面的函数将返回“id”等于存储“slug”的用户集合

如果您有很多商店,您可以执行以下操作:

public function getStoreUsers(){
$stores = Store::all();
$storeUsers;

foreach($stores as $store){
$users = $store->users;
$storeUsers[$store['id']] = array($users);
return response()->json($storeUsers);
}
}

此函数将返回每个商店的用户数组。

我已经根据我对您问题的理解回答了,如果出现任何错误,请在下面回复,以便我可以修复(如果可能)。如果不让我知道,我希望这就是您想要的。

更新:

这是我从您的请求中了解到的。

存储 a 、存储 b 、存储 c 具有 slug = xyz。您有 50,000 个用户。其中 10,000 个拥有 slug xyz。您需要这 10,000 个用户的信息。如果是这种情况,那么下面的代码将帮助您。

public function getStoreUsers(){
$slugtomatch = 'xyz';
$result;
$stores = Store::where('slug',$slugtomatch)->get();

foreach($stores as $store){
$users = $store->users;
$result = array($users);
}

return response()->json($result);

}

这将返回在 slug 字段中具有 $slugtomatch 值的用户数组。

关于php - Laravel 自定义关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52901281/

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