我有一个系统,希望显示公司的所有项目。该特定公司必须是登录用户所在的公司。这听起来相对简单,但是由于项目和用户都没有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'));
}