所以我有两个表,Bids 表和 Projects 表。他们之间的关系是这样的:
Bids.php:
public function projects()
{
return $this->belongsTo('App\Projects');
}
Projects.php:
public function bids()
{
return $this->hasMany('App\Bids');
}
这是 Projects table。这是Bids table。我想在 View 的每一行表中打印所有投标数据及其各自的项目数据。 我试图在我的控制器中这样做:
$bids= auth()->user()->bids()->get();
foreach($bids as $bid)
{
$projects= Projects::find($bid->project_id);
}
return view('bids.index',compact('bids','projects'));
索引视图:
@if($bids->count() != 0)
@foreach($bids as $bid)
<tr>
<td><a href="{{ route('projects.select',$projects->id) }}">{{$projects->name}}</a></td>
<td>{{$bid->status}}</td>
</tr>
@endforeach
@else
<tr>
<td colspan="6" class="text-center">No record found.</td>
</tr>
@endif
但是我在表格的一行中重复了数据。那么正确的做法应该是什么呢?对不起,如果这有点模糊,但这是我抽象解释它的最佳方式。
答案 0 :(得分:1)
您没有使用您在此处定义的关系。
$bids = auth()->user()->bids()->with('project')->get();
这将预先加载每个出价的 project
关系。
我真的不知道您希望它在视图中看起来如何,但您可以非常简单地迭代出价并获取项目信息:
@foreach ($bids as $bid)
{{ $bid->id }}
{{ $bid->project->name ?? '' }}
@endforeach
附注:
您的 Projects
模型应该是 Project
,模型以单数命名,数据库表以复数命名。你的关系应该是 project
而不是 projects
因为它是一个单一的关系,属于;它只能返回一条记录或 null
。