gpt4 book ai didi

php - 在 laravel 中处理模型中的关系

转载 作者:行者123 更新时间:2023-11-30 22:05:37 27 4
gpt4 key购买 nike

我正在学习 Laravel php 框架中的关系,我正在尝试构建此查询

SELECT * FROM users u INNER JOIN link_to_stores lts ON u.id=lts.user_id INNER JOIN stores ON lts.store_id=s.store_id WHERE lts.privilege = 'Owner'

我在模型中构建了这个

Link_to_store.php

public function store()
{
return $this->belongsTo('App\Store');
}

public function user()
{
return $this->belongsTo('App\User');
}

用户.php

public function store_links()
{
return $this->hasMany('App\Link_to_store');
}

商店.php

public function user_links()
{
return $this->hasMany('App\Link_to_store');
}

我试过这个查询,但这只连接了用户和 link_to_store 表

$personal_stores = Auth::user()->store_links->where('privilege','=','Owner');

现在我也很困惑如何加入商店表。有人可以帮忙吗?

架构是这样的

存储表

store_id store_name

用户表

id 名称

Link_to_stores 表

id store_id user_id 权限

最佳答案

我想 store_links 实际上是一个数据透视表。在这种情况下,您可以使用 belongsToMany() ,这将自动处理数据透视表。

为此,在您的 User 模型中,您将商店功能更改为:

function stores() {
return $this->belongsToMany('App\Store', 'store_links', 'user_id', 'store_id')->withPivot('privilege');
}

因为 stores 的主键不是 id,你必须在你的 Store 模型中用下面一行定义它:

protected $primaryKey = 'store_id';

现在要为用户获取商店,您只需调用

$stores = Auth::user->stores()->wherePivot('privilege', 'Owner')->get();

关于php - 在 laravel 中处理模型中的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41873980/

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