首页 > 解决方案 > Laravel 多关系数据获取

问题描述

再会。我在 laravel 中有这个关系问题我有三个模型

  1. 用户
  2. 状态
  3. 学校

我在它们之间建立了以下关系

一个。学校 - 用户(一个用户可以注册许多学校)

在用户模型中

public function schools(){
        return $this->belongsToMany('App\Models\School', 'school_user', 'user_id', 'school_id');
}

湾。一个学校可以有很多用户

在校模式

public function users(){
        return $this->belongsToMany('App\Models\User', 'school_user', 'school_id', 'user_id');
}

C。一所学校属于一个州(即可以在一个州找到)

在校模式

public function states(){
        return $this->belongsTo('App\Models\State');
}

d。一个州有很多学校

状态模型

public function schools(){
        return $this->hasMany('App\Models\School');
}

现在,我知道如何查询具有直接关系的模型了。例如,我可以获取与学校关联的用户,反之亦然。我也可以得到一个州的学校。

我的问题 如何获取与给定状态的学校相关联的所有用户(使用查询)?假设我们所拥有的只是一个州的名称。

并且可能获取用户关联的所有学校以及与学校关联的日期(时间)?

这就是我所做的。第二个查询没有给我答案

public function details(){
        
        //Get all schools associated with a state 
        $schools = State::with('schools')->where('id',1)->first();
        
         foreach($schools->schools as $data){
          //Get all users associated with the schools
          $users = School::with('users')->where('id',$data->id);
          dd($users);  
        }    
    }

除了这种方法可能不正确之外,我没有得到任何答案。有没有可以解决这个问题的查询或方法?

谢谢。

标签: phplaraveleloquentrelational-databaserelationship

解决方案


您应该在关系数组属性中看到相关模型

$school= App\Models\School::with('User', 'State')->get();

推荐阅读