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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...