首页 > 解决方案 > Laravel:仅为相关模型加载嵌套关系

问题描述

我正在尝试实现一项功能,但我认为它不能通过关系获得。

一个用户可能有很多公司,而公司可能有很多用户。它们通过 company_employees 数据透视表连接。

数据透视表如下所示:

company_id, user_id, position_id

我想有一个选项来获取公司员工的相关职位。

假设有公司:

  1. “福公司”
  2. “酒吧公司”

和用户

  1. “约翰·多伊”

还有2个职位:

  1. “前端开发者”
  2. “后端开发者”

John Doe 是这两家公司的员工,职位不同。

company_id | user_id | position_id
1            1         1
2            1         2

我怎么能做类似的东西

$company = Company::first();
$company->employees()->with('position')->get();

仅返回与属于第一家公司的第一个用户关联的职位作为 HasOne 关系?

标签: phplaravel

解决方案


 Company.php     
    public function user() {
         return $this->belongsToMany('App\User', 'company_employees ', 'company_id', 
                    'user_id');
    }

    User.php
      public function position() {
            return $this->hasMany('App\Position');
        }


    $company = Company::with('user.position')->get();

推荐阅读