在我的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();
}
性别代码(0 =女性,1 =男性) Leave_applicable_gender(1 =两者,2 =男性,3 =女性)
一个HrLeaveType具有许多LeaveTypeDetail。我想生成一个条件为HrLeaveType的下拉列表。
如果 $ employeeegendercode == 0,然后$ leavetypes = HrLeaveType,其中$ employeeemptypeid = HrEmployeeType中的employee_type_id,leave_applicable_gender为1或3
其他
$ leavetypes = HrLeaveType,其中$ employeeemptypeid = HrEmployeeType中的employee_type_id,而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
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
}
要实现这一目标?
谢谢。
答案 0 :(得分:0)
您可以在where条件下雄辩地使用whereHas
。请阅读更多内容。https://laravel.com/docs/7.x/eloquent-relationships#querying-relationship-existence
希望它对您有帮助