laravel - Laravel - 如何根据员工和登录用户获取公司详细信息
问题描述
在我的 Laravel 8 应用程序中,我有以下模型。
公司
protected $fillable = [
'id',
'name',
'website',
'company_logo',
'registration_number',
'date_established',
'address',
];
员工
protected $fillable = [
'id',
'company_id',
'user_id',
'first_name',
'last_name',
'other_name',
'gender',
];
public function company()
{
return $this->belongsTo(Company::class,'company_id','id');
}
public function user()
{
return $this->belongsTo(User::class,'user_id','id');
}
我开始了这个,但在路上卡住了。我想根据登录的用户选择公司详细信息。公司表应该是主表:
public function getMyCompany()
{
try {
$userId = Auth::user()->id;
$employeeId = Employee::where('user_id', $userId)->first();
$company = Company::...;
return $this->success('Company successfully Retrieved.', [
'company' => $company
]);
} catch (\Exception $e) {
Log::error($e);
return $this->error($e->getMessage(), $e->getCode());
}
}
我如何使用以下方法实现这一目标(选择公司的所有详细信息):
$company = Company::...;
制作主模型
解决方案
我不确定您是否希望从用户那里获得多家公司,或者只是一家。我不确定的原因是您已经定义了公司和员工之间的 1-1 关系,但看起来您希望 getMyCompany() 返回多个公司。
如果这个想法是只检索员工工作的一家公司,您可以使用员工的“belongsTo”关系,如下所示:
$company = $employee->company;
由于您已经检索到与经过身份验证的用户相关的员工,并且员工模型具有“公司”关系。
如果您想一次性完成,可以链接查询:
$company = Employee::where('user_id', Auth::user()->id)
->first()
->company;
推荐阅读
- python-3.x - 在其目录系统中读取 LIDC-IDRI 数据集?
- assembly - MOVNTSS 有多少性能损失?
- python - 在 Python 中调用 C 函数并返回 2 个值
- sql-server - 在 Azure SQL Server 上创建从本地 SQL Server 读取表的视图
- sql - 此检查是否避免 SQL 注入?
- sql - Postgresql:创建一个插入查询,在一个范围内插入多条记录
- java - 如何让 GUI 和 Graphics 同时出现?
- docker - 如何在 docker 容器中添加文件并使其可以从其他容器访问?
- vba - microsoft excel - 如何将图像放入形状中?
- python - 在 Python 中循环列并为文件中的每一列写入输出