Laravel - 显示用户所在公司的所有项目
Laravel - Show all project from company that user is in
我有一个系统,我想在其中显示一家公司的所有项目。该特定公司必须是登录用户所在的公司。这听起来相对简单,但我无法弄清楚我当前的数据库设置是如何设置的,因为项目和用户都没有 project_ID
,这是因为我正在使用中间 table。我已经建立了我的数据库结构如下
- 用户
- company_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 获取所有项目,并且 none 来自特定公司的特定项目。
控制器
public function index()
{
$projects = Project::all();
return view('Project.show', compact('projects'));
}
无需掌握技术,这也行得通:
$request->user()->company->projects;
获取当前用户的公司,然后获取该公司的项目。
我有一个系统,我想在其中显示一家公司的所有项目。该特定公司必须是登录用户所在的公司。这听起来相对简单,但我无法弄清楚我当前的数据库设置是如何设置的,因为项目和用户都没有 project_ID
,这是因为我正在使用中间 table。我已经建立了我的数据库结构如下
- 用户
- company_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 获取所有项目,并且 none 来自特定公司的特定项目。
控制器
public function index()
{
$projects = Project::all();
return view('Project.show', compact('projects'));
}
无需掌握技术,这也行得通:
$request->user()->company->projects;
获取当前用户的公司,然后获取该公司的项目。