laravel - laravel,使用foreach按id获取数据
问题描述
如何根据配套数据库上的 insurance_id 获取数据?如果有帮助, insurance_id 取决于另一个名为“insurances”的表。数据库是这样的:
视图如下所示:
这是视图:
<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', 'id')->prepend(trans('global.pleaseSelect'), '');
$sales_2s = User::all()->pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');
$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();
如果您只想要与 currentinsurance_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;
推荐阅读
- python - 如何让 replace() 函数正常工作?
- python - 两个几乎相同的代码,一个有效,另一个无效
- python - 向 Python 日志记录中的每条日志消息添加信息
- reactjs - React js在for循环中使用axios填充地图
- python - localhost python多变量赋值
- android - 未收到来自 Firebase 的 OTP
- java - java中的getter和setter以及数组
- ignite - 如何在简单的 apache ignite 集群中的所有节点上完全复制数据?
- ruby - 如何使用该程序从命令行获取用户输入?
- javascript - 你如何在 discord.js 中制作嵌入页面