写真も検索結果に表示したい。アバター写真だけでなく、3枚の写真。写真は追加のテーブルuser_photosにあります。ユーザーごとに1行を取得する場合、答えは明確になります-内部結合。ただし、ユーザーごとに複数行を取得します。
私が使用できる最初の方法は結合です:
SELECT * FROM users INNER JOIN photos ON photos.user_id=users.user_id
この場合、結果を同じuser_idとマージするために、追加のphpコードが必要です。このようなもの:
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']配列の2番目のレベルループが必要です。
または、結果のサブクエリごとに使用できます。どのオプションもエレガントに見えないので、他に方法があるのではないかと思います。そうでない場合は、おそらく最初のオプションが進むべき方法ですよね?