【发布时间】:2020-10-05 06:33:58
【问题描述】:
在我的 Laravel-5.8 项目中,我有这个模型:
class HrLeaveType extends Model
{
protected $table = 'hr_leave_types';
protected $fillable = [
'id',
'company_id',
'leave_type_name',
];
public function leavetypedetail()
{
return $this->hasMany('App\Models\Hr\HrLeaveTypeDetail');
}
}
class HrLeaveTypeDetail extends Model
{
protected $table = 'hr_leave_type_details';
protected $fillable = [
'id',
'leave_type_id',
'company_id',
'employee_type_id',
'leave_applicable_gender',
];
public function leavetype()
{
return $this->belongsTo('App\Models\Hr\HrLeaveType', 'leave_type_id', 'id');
}
public function employeetype()
{
return $this->belongsTo('App\Models\Hr\HrEmployeeType', 'employee_type_id', 'id' );
}
public function company()
{
return $this->belongsTo('App\Models\Organization\OrgCompany','company_id');
}
}
一个 HrLeaveType 有多个 LeaveTypeDetail
我的控制器中有这个:
$userCompany = Auth::user()->company_id;
$employeeCode = Auth::user()->employee_code;
$employeeemptypeid = HrEmployee::where('employee_code', $employeeCode)->where('company_id', $userCompany)->pluck('employee_type_id')->first();
$employeeegendercode = HrEmployee::where('employee_code', $employeeCode)->where('company_id', $userCompany)->pluck('gender_code')->first();
if($employeeegendercode == 0)
{
$leavetypes = HrLeaveType::where('company_id', $userCompany)->get();
}else{
$leavetypes = HrLeaveType::where('company_id', $userCompany)->get();
}
gender_code(0=女性,1=男性) leave_applicable_gender(1=两者,2=男性,3=女性)
一个 HrLeaveType 有多个 LeaveTypeDetail。我想根据条件生成一个带有 HrLeaveType 的下拉列表。
如果 $employeeegendercode == 0 然后 $leavetypes = HrLeaveType 其中 $employeeemptypeid = employee_type_id in HrEmployeeType and leave_applicable_gender 是 1 或 3
其他
$leavetypes = HrLeaveType 其中 $employeeemptypeid = employee_type_id in HrEmployeeType and leave_applicable_gender 是 1 或 2
目前,我的看法是这样的:
<div class="form-group">
<label>Leave Type:<span style="color:red;">*</span></label>
<select id="leave_type" class="form-control select2bs4" data-placeholder="Choose Leave Type" tabindex="1" name="leave_type_id" style="width: 100%;">
<option value="">Select Leave Type</option>
@if($leavetypes->count() > 0)
@foreach($leavetypes as $leavetype)
<option value="{{$leavetype->id}}" {{ old('leave_type_id', $leaverequest->leave_type_id) == $leavetype->id ? 'selected' : ''}}>{{$leavetype->leave_type_name}}
</option>
@endforeach
@endif
</select>
</div>
但不是那种休假类型取决于性别
如何完成 $leavetypes in
if($employeeegendercode == 0)
{
$leavetypes = HrLeaveType::where('company_id', $userCompany)->get();
where leavetype->leavetypedetail->leave_applicable_gender == 1 or 3
}else{
$leavetypes = HrLeaveType::where('company_id', $userCompany)->get();
where leavetype->leavetypedetail->leave_applicable_gender == 1 or 2
}
要达到这个目的?
谢谢。
【问题讨论】:
标签: laravel