左连接和 foreach 显示 Larapel 中辅助表的行数



这是我在控制器中的函数:

$bssr = table::('adv')
->leftjoin('picture', 'adv.id', '=', 'picture.advid')
->select('adv.*', 'picture.path)
->where('adv.id', '=', '1')
->paginate(20);

return view('bssr.category')->with('bssr', $bssr);

然后我有我的刀片如下:

@foreach($bssr as $data)
<table>
<tr>
<td width="20%">
<img src="{{url('avatar/'.$data->path) }}"> 
</td>
<td>
<a href="{{ url('details/'.$data->id) }}">{{ $data->advtopic }}</a>         
</td>
</tr>
</table>
@endforeach

我的表格如下:

表:广告

id      advtopic 
1       my adv name

表:p

id     path     advid
1      mypath1    1
2      mypath2    1
3      mypath3    1

我的边栏选项卡结果不应该只返回 1 行吗? 结果给出 3 行。

谁能帮我根据表"adv"只返回 1 行?任何帮助将不胜感激。

我认为你应该试试这个:

$bssr = table::('adv')
->leftjoin('picture', 'picture.advid', '=', 'adv.id')
->select('adv.id AS Id','adv.advtopic AS advtopic', 'picture.path AS path')
->where('adv.id', '=', '1')
->groupBy('picture.advid')
->paginate(20);

return view('bssr.category',compact('bssr'));
@foreach($bssr as $data)
<table>
<tr>
<td width="20%">
<img src="{{url('avatar/'.$data->path) }}"> 
</td>
<td>
<a href="{{ url('details/'.$data->Id) }}">{{ $data->advtopic }}</a>         
</td>
</tr>
</table>
@endforeach

希望这对你有用!!

在您的情况下,是的,它将返回 3 个结果,因为您的查询与左侧表(图片表(上的 3 行匹配。我不知道你想从图片表中得到什么,你想要最近的吗?第一个?还是最后一个?还是只是随机的?

$bssr = table::('adv')
->leftjoin('picture', 'adv.id', '=', 'picture.advid')
->select('adv.*', 'picture.path)
->where('adv.id', '=', '1')
->groupBy('adv.id') // try adding this if you want that result
->paginate(20);

return view('bssr.category')->with('bssr', $bssr);

请修改您的问题,以便我可以修改我的答案。不要忘记在图片桌上包括您想要获得的内容。

最新更新