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

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

  • 用户
    • company_id
  • 公司
    • id
  • 项目
    • company_id
  • Project_User
    • user_id
    • project_id

通过上述设置,我为除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获得所有项目,而没有特定公司的特别项目。

控制器

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

    return view('Project.show',compact('projects'));
}
zhiyin1985 回答:Laravel-向用户显示公司所属的所有项目

无需掌握技术,这将起作用:

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

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

本文链接:https://www.f2er.com/3156273.html

大家都在问