如何解决Laravel刀片模板:数据透视表中存在检查记录
我有两个模型,它们由数据透视表(taxrule_rates),TaxRule(表tax_rules)和TaxRate(表tax_rates)连接 现在在刀片模板下拉菜单中,各个模型的数据透视表中都存在检查税率记录的方法。我想在下拉菜单中预先选择税率选项以获取税则。
edit_taxrule刀片下拉列表为:
@foreach($taxrates as $taxrate)
<option value="{{$taxrate->id}}" >{{$taxrate->rate_name}}</option>
@endforeach
在TaxRuleController中:
$taxrule = $TaxRule::find($id);
$taxrates = TaxRate::get();
解决方法
正如Kashif在评论中提到的那样,您可以使用count
函数来检查模型之间是否存在任何关系。
要预先选择一个有关联的人,可以执行以下操作:
@foreach($taxrates as $taxrate)
@if($taxrate->TaxRateRules->count() > 0)
<option selected value="{{$taxrate->id}}" >{{$taxrate->rate_name}}</option>
@else
<option value="{{$taxrate->id}}" >{{$taxrate->rate_name}}</option>
@endif
@endforeach
,
控制器
$taxrule = TaxRule::find($id);
$taxrates = TaxRate::get();
$taxrateIds = $taxrule->taxRates()->pluck('id')->toArray(); // it will work if u set realtionship
模型
在TaxRule
模型中
public function taxRates()
{
return $this->belongsToMany('App\TaxRate','taxrule_rates');
}
刀片
@foreach($taxrates as $taxrate)
<option value="{{$taxrate->id}}"
{{ in_array($taxrate->id,$taxrateIds) ? 'selected' : '' }}
>{{$taxrate->rate_name}}</option>
@endforeach
另一个解决方案
模型
在TaxRule
模型中
protected $appends = ['selecteded'];
public function taxRates()
{
return $this->belongsToMany('App\TaxRate','taxrule_rates');
}
public function getSelectededAttribute()
{
return $this->taxRates()->pluck('id')->toArray();
}
刀片
@foreach($taxrates as $taxrate)
<option value="{{$taxrate->id}}"
{{ in_array($taxrate->id,$taxrate->selecteded) ? 'selected' : '' }}
>{{$taxrate->rate_name}}</option>
@endforeach
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。