发布于2023-11-29 20:02 阅读(512) 评论(0) 点赞(18) 收藏(3)
我正在学习 Laravel php 框架中的关系,我正在尝试构建这个查询
SELECT * FROM users u INNER JOIN link_to_stores lts ON u.id=lts.user_id INNER JOIN stores s ON lts.store_id=s.store_id WHERE lts.privilege = 'Owner'
我在模型中构建了这个
链接到商店.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 name
Link_to_stores 表
id store_id user_id privilege
我想store_links
实际上是一个数据透视表。在这种情况下,您可以使用belongsToMany()
,这将自动处理数据透视表。
为此,在您的User
模型中将 store 函数更改为:
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();
作者:黑洞官方问答小能手
链接:http://www.phpheidong.com/blog/article/550177/0a087d92726b39d1a40a/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!