繁体   English   中英

Laravel 5:如何使用 Eloquent 查询数据透视表

[英]Laravel 5: how to query a pivot table using Eloquent

有没有办法使用 Eloquent 查询数据透视表而没有该数据透视表的模型?

情况:一个用户可以拥有多个业务,一个业务可以被多个用户拥有。 我有下表来处理多对多关系。

| users     | businesses  | business_user |
-------------------------------------------
| id        | id          | business_id   |
| name      | name        | user_id       |
| created_at| created_at  | created_at    |
| updated_at| updated_at  | updated_at    |

我的 User.php 模型

public function businesses()
{
    return $this->belongsToMany('App\Business')->withTimestamps();
}

我的 Business.php 模型

public function users()
{
    return $this->belongsToMany('App\User')->withTimestamps();
}

1- 在我的控制器中,我正在尝试查询 business_user(数据透视表)表以计算 Auth 用户 ID 拥有的企业数量。

select count(*) from business_user where user_id = Auth::user()->id() ;

2- 我正在尝试查询 business_user (pivot) 表以获取在表 business_user 中为该用户 ID 找到的每一行的企业名称。

select business_user.business_id, businesses.name 
  from business_user 
  join businesses 
    on business_user.business_id = businesses.id
 where business_user.user_id     = Auth::user()->id() ;

我想用 Eloquent 查询数据透视表,但语法不正确。 我需要该 business_user 表的模型吗?

你们中的一些人根本不喜欢使用 Eloquent 吗?

谢谢简历

您不需要数据透视表的模型。 你要求的东西非常简单。

当前登录User拥有的企业数量

echo \Auth::user()->businesses->count();

当前User的每个企业的名称

foreach(\Auth::user()->businesses as $business){
  echo $business->name;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM