我想在用户搜索结果中显示他们的照片。不仅是头像照片,还有3张照片。照片在额外的表 user_photos 中。如果我会为每个用户获得单行,那么答案将很明确 - 内部连接。但我会为每个用户获得多行。
我可以使用的第一种方法是加入:
SELECT * FROM users INNER JOIN photos ON photos.user_id=users.user_id
在这种情况下,我需要一些额外的 php 代码来合并具有相同 user_id 的结果。像这样的东西:
foreach($results as $result){
if(isset($user[$result['user_id']]['age'])){
$user[$result['user_id']]['photos'][] = $result['photo'];
continue;
}
$user[$result['user_id']]['age'] = $result['age'];
$user[$result['user_id']]['photos'][] = $result['photo'];
//...
}
然后在视图中,我需要为用户提供第一级循环,然后为每个用户提供 $user[$result['user_id']]['photos'] 数组的第二级循环。
或者我可以用于每个结果子查询。没有一个选项看起来很优雅,所以我想知道是否还有其他方法。如果没有,可能第一个选择是一种方法,对吗?