Php Laravel基于关系获取数据
所以我有两个表,投标表和项目表。它们之间的关系如下: Bids.php:Php Laravel基于关系获取数据,php,laravel,Php,Laravel,所以我有两个表,投标表和项目表。它们之间的关系如下: Bids.php: public function projects() { return $this->belongsTo('App\Projects'); } Projects.php: public function bids() { return $this->hasMany('App\Bids'); } 这是 . 这是。我想在视图中的每一行表格中打印所有投标数据及其各自的项目
public function projects()
{
return $this->belongsTo('App\Projects');
}
Projects.php:
public function bids()
{
return $this->hasMany('App\Bids');
}
这是
. 这是。我想在视图中的每一行表格中打印所有投标数据及其各自的项目数据。
我尝试在控制器中这样做:
$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
@if($bids->count()!=0)
@foreach($bids作为$bid进行投标)
{{$bid->status}
@endforeach
@否则
没有找到任何记录。
@恩迪夫
但我在表格的一行中重复了数据。那么正确的方法应该是什么呢?抱歉,如果这有点模糊,但这是我最好的抽象解释方式。您没有使用此处定义的关系
$bids = auth()->user()->bids()->with('project')->get();
这将为每个投标加载项目
关系
我真的不知道您希望它在视图中的外观如何,但您可以迭代投标并非常简单地获得项目信息:
@foreach ($bids as $bid)
{{ $bid->id }}
{{ $bid->project->name ?? '' }}
@endforeach
旁注:
您的
项目
模型应为项目
,模型以单数命名,数据库表以复数命名。你的关系应该是project
而不是projects
,因为它是一种单一的关系,属于;它只能返回一条记录或null
,那么当前是什么阻止您这样做的呢?不知道如何从出价模型访问关系?@lagbox hi我编辑了我的问题,请检查:)hi我刚刚意识到我把我的foreach循环的外部放错了位置。我按照你说的做了,我可以显示{{$bid->status},但是{{$bid->projects->name???'}在视图中不显示任何内容。您应该更改名称,因为belongsTo
关系无法正确匹配记录,因为它认为您的外键是项目id
而不是项目id
,因为您是如何命名关系的谢谢您的帮助!我更改了模型名称,现在我工作得很好!现在我知道为什么我的关系总是不起作用了!