Laravel 5:如何使用Eloquent

时间:2015-07-02 17:30:59

标签: php eloquent laravel-5

有没有办法使用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(pivot)表以计算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吗?

由于 CV

1 个答案:

答案 0 :(得分:1)

您不需要Pivot表的Model。你要求的东西非常简单。

当前登录User的商家数量

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

当前User

的每个商家的名称
foreach(\Auth::user()->businesses as $business){
  echo $business->name;
}