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

laravel,使用foreach通过id获取数据

如何解决laravel,使用foreach通过id获取数据

如何根据伴随数据库上的 insurance_id 获取数据?如果有帮助,insurance_id 依赖于另一个名为“insurances”的表。数据库是这样的:

enter image description here

视图如下所示:

enter image description here

这是视图:

<table class="table" id="companions_table">
<thead>
   <tr>
        <th>Name</th>
        <th>Date of Birth</th>
        <th>IC No</th>
        <th>Relationship</th>
    </tr>
</thead>

   <tbody>
      @foreach (old('companions',$companions->count() ? $companions : ['']) as $companion)
        <tr id="companion{{ $loop->index }}">
          <td>
                <input type="text" name="companion_name[]" id="companion_name[]" class="form-control" value="{{ old('companion_name',$companion->companion_name) }}" />
            </td>

            <td>
                <div class="input-group date" data-provide="datepicker" data-date-format="dd-mm-yyyy" data-date-today-highlight="true" data-date-end-date="0d">
                <input class="form-control" type="text" name="dob[]" id="dob[]" value="{{ old('dob',$companion->dob) }}">
                <div class="input-group-addon">
                <span class="fa fa-calendar"></span>
                </div>
                </div>
            </td>
            <td>
                <input type="text" name="ic[]" id="ic[]" class="form-control" value="{{ old('ic',$companion->ic) }}" />
                </td>
                <td>
                <input type="text" name="relationship[]" id="relationship[]" class="form-control" value="{{ old('relationship',$companion->relationship) }}" />
        </td>
        </tr>
      @endforeach
                <tr id="companion{{ count(old('companions',$companions->count() ? $companions : [''])) }}"></tr>
                    /tbody>
                    </table>
                
            <div class="row">
               <div class="col-md-12">
                <button id="add_row" class="btn btn-default pull-left">+ Add Row</button>
                <button id='delete_row' class="pull-right btn btn-danger">- Delete Row</button>
            </div>

我的控制器:

public function edit(Insurance $insurance)
{
    abort_if(Gate::denies('insurance_edit'),Response::HTTP_FORBIDDEN,'403 Forbidden');

    $customers = CustomerProfile::all()->pluck('name','id')->prepend(trans('global.pleaseSelect'),'');

    $products = Product::all()->pluck('name','');

    $sales_2s = User::all()->pluck('name','');

    $companions = Companion::all();

    $insurance->load('customer','product','sales_2','team','companions');

    $approvers = Role::findOrFail(3)->users()->get();

    return view('admin.insurances.edit',compact('customers','products','sales_2s','insurance','approvers','companions'));
}

它不断获取表上的所有数据,基本上不考虑 insurance_id。我该如何解决这个问题?

解决方法

由于以下行,所有同伴都被获取,无论 insurance_id 是什么:

$companions = Companion::all();

如果您只想要带有当前 insurance_id 的同伴,最快的方法是将前面提到的行替换为:

$companions = Companion::where('insurance_id',$insurance->id)->get();

这应该可行,但是在 Laravel 中处理这种关系的传统方法是将以下函数添加到您的 Insurance 模型中:

use App\Models\Companion; // or wherever your model happens to be located

public function companions()
{
      return $this->hasMany(Companion::class);
}

并将开头提到的行替换为:

$companions = $insurance->companions;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。