请帮忙。
新手在这里。我需要显示赞助人和商品的名称,而不是显示其ID。我有3张桌子:
顾客(id,名称),物品(id,名称),交易(patron_id,item_id,借出,到期,退回)
赞助人模型
public function transaction ()
{
return $this->hasMany(Transaction::class);
}
物品模型
public function transaction ()
{
return $this->hasMany(Transaction::class);
}
交易模型
public function item()
{
return $this->belongsTo(Item::class);
}
public function patrons()
{
return $this->belongsTo(Patron::class);
}
这是我真正困惑的部分。我不知道如何编码TransactionController和视图。
事务控制器:(这还对吗?)
$transactions = Transaction::paginate(10);
return view('transactions.index')->with(compact('transactions'))->with('patrons', Patron::all())->with('items', Item::all());
index.blade.php(我不知道该如何编码)
@foreach($transactions as $transaction)
<tr role="row" class="odd">
<td class="sorting_1 dtr-control">{{ $transaction->patron_id }}</td>
<td>{{ $transaction->item_id }}</td>
<td>{{ $transaction->Loaned }}</td>
<td>{{ $transaction->Due }}</td>
</tr>
@endforeach
视图显示如下:
1 1 2020-09-21
2 5 2020-09-21
但是我需要它显示如下:
John Doe Harry Potter 2020-09-21
Mary Jane Game of Thrones 2020-09-21
问题来自您如何从数据库中提取数据以及如何将其推送到视图。
为了检索数据,您可以急于一次加载transactions
所有模型的关系并同时分页:
$transactions = Transaction::with('patron', 'item')->paginate(15);
看一下有关视图的文档,有多种传输数据的方法。Compact的效果很好,并且易于理解,并且有多个收益,因此我在这里举一个例子:
return view('transactions.index', compact('transactions'));
就是这样-只需记住transactions
在引号中键入变量,而不要将实际变量放入compact方法中即可。
然后,由于您渴望加载关系,因此在视图中,您现在可以调用关系名称,而不仅仅是ID号。例如:
<td>{{ $transaction->item->name }}</td>
建议您将关系从顾客重新命名为顾客,因为它是一个belongsTo。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句