Laravel - 显示用户所在公司的所有项目

Laravel - Show all project from company that user is in

我有一个系统,我想在其中显示一家公司的所有项目。该特定公司必须是登录用户所在的公司。这听起来相对简单,但我无法弄清楚我当前的数据库设置是如何设置的,因为项目和用户都没有 project_ID,这是因为我正在使用中间 table。我已经建立了我的数据库结构如下

通过上述设置,我与每个模型建立了所有连接,但 Project_User 的模型除外。下面列出了这些模型。

用户模型

class User extends Authenticatable
{

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function role()
    {
        return $this->belongsTo(Role::class, 'role_id');
    }

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function job()
    {
        return $this->belongsTo(Job::class, 'job_id');
    }

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function company()
    {
        return $this->belongsTo(Company::class, 'company_id');
    }

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function projects()
    {
        return $this->belongsToMany(Project::class);
    }

    public function isAdmin()
    {

    }

    public function isCompanyOwner() {

        if(Auth::check())
            return(Auth::user()->job_id == 1);

        return false;
    }
}

项目模型

class Project extends Model
{
    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function users()
    {
        return $this->belongsToMany(User::class);
    }

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function company()
    {
        return $this->belongsTo(Company::class);
    }
}

公司型号

class Company extends Model
{
    /**
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    public function users()
    {
        return $this->hasMany(User::class);
    }

    /*
     *
     */
    public function projects()
    {
        return $this->hasMany(Project::class);
    }
}

如何在主屏幕上显示登录用户所在公司的所有项目?使用当前的数据库设置?

当前的 Controller 获取所有项目,并且 none 来自特定公司的特定项目。

控制器

public function index()
{
    $projects = Project::all();

    return view('Project.show', compact('projects'));
}

无需掌握技术,这也行得通:

$request->user()->company->projects;

获取当前用户的公司,然后获取该公司的项目。