本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在 Laravel 中处理模型中的关系

发布于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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

18 0
收藏该文
已收藏

评论内容:(最多支持255个字符)