Rai*_*aan 1 php laravel laravel-5 laravel-6
我有一个系统,我想在其中显示公司的所有项目。该特定公司必须是登录用户所在的公司。这听起来相对简单,但我无法弄清楚我当前的数据库设置如何,因为项目和用户都没有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;
}
}
Run Code Online (Sandbox Code Playgroud)
项目模型
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);
}
}
Run Code Online (Sandbox Code Playgroud)
公司模式
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);
}
}
Run Code Online (Sandbox Code Playgroud)
如何在我的主屏幕上显示登录用户所在公司的所有项目?使用当前的数据库设置?
当前的 Controller 获取所有项目,没有特定公司的特定项目。
控制器
public function index()
{
$projects = Project::all();
return view('Project.show', compact('projects'));
}
Run Code Online (Sandbox Code Playgroud)
如果没有获得技术,这将起作用:
$request->user()->company->projects;
Run Code Online (Sandbox Code Playgroud)
获取当前用户的公司,然后获取该公司的项目。