微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel刀片模板:数据透视表中存在检查记录

如何解决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 举报,一经查实,本站将立刻删除。