我想显示数据库中的检查状态,当我在视图上添加{{ $mod->hasAnyUnit($unit->kd_unit)?'checked':'' }}
时出现错误
我有单位表,如角色表:
-------------------
id | kd_unit | name
-------------------
1 | 01 | A
2 | 02 | B
2 | 03 | C
-------------------
第二个是rs表,就像一个用户表:
-------------------
id | kd_rs| name
-------------------
1 | 01 | ASD
2 | 02 | ZXC
-------------------
第三个是mod表,就像一个角色用户:
-------------------
id | kd_rs| kd_unit
-------------------
1 | 01 | 01
2 | 01 | 02
3 | 01 | 03
-------------------
我的模型表中的模型:
class TManagerOnDuty extends Model
{
public function units() {
return $this->belongsToMany('App\Unit', 'kd_unit', 'kd_unit');
}
public function hasAnyUnits($units) {
return null !== $this->units()->whereIn('kd_unit', $units)->first();
}
public function hasAnyUnit($unit) {
return null !== $this->units()->where('kd_unit', $unit)->first();
}
}
我的控制器:
class ManagerOnDutyController extends Controller
{
public function edit($kd_rs)
{
$units = Unit::orderBy('nm_unit', 'asc')->where('is_active', true)->get();
$mod = TManagerOnDuty::where('kd_rs', $kd_rs)->get();
return view('layouts.manageronduty.edit')->with([
'mod' => $mod,
'units' => $units,
'kd_rs' => $kd_rs
]);
}
}
我的看法:
@foreach($units as $unit)
<div class="custom-control custom-checkbox mb-3">
<input name="unitRS[]" value="{{$unit->kd_unit}}" {{ $mod->hasAnyUnit($unit->kd_unit)?'checked':'' }} id="customCheck{{$unit->kd_unit}}" class="custom-control-input" type="checkbox">
<label class="custom-control-label" for="customCheck{{$unit->kd_unit}}">{{$unit->nm_unit}}</label>
</div>
@endforeach
尝试这个
$mod = TManagerOnDuty::where('kd_rs', $kd_rs)->first();
在您的控制器中,作为get返回该对象的集合,您无法从该集合中调用您的hasAnyUnit()
,因此首先从您的查询中调用一个对象,然后将其与hasAnyUnit()]链接起来>