نه تو حلقه کوئری کوئری زدن کار اشتباهیه
اول با یه گوئری همه یوزر ها رو میخونی بعد میزاری تو حلقه و آیدی هاشون رو در میاری توی یک آرایه بعد همه دوستان رو با یک کوئری از اون 1 آرایه میخونی
$users = select * from users where name like '%sara%'
$user_ids = [];
foreach($users as $user )
$user_ids[]= $user['id'];
$friends = select * from friends table where first_id IN (explode(',' , $user_ids ) ) OR second_id IN (explode(',' , $user_ids ) )
بعد میتونی با یه حلقه سوم نتایج 2 کوئری رو به هم وصل کنی
$final_export = [] ;
foreach($users as $user )
{
$this_user = $user ;
$this_user['friends'] = [] ;
foreach($friends as $friend )
{
if($friends['first_id'] == $user['id'] || $friends['second_id'] == $user['id'])
$this_user['friends'][] = friends;
}
$final_export[] = $this_usre ;
}
چند نکته
1 - من این رو همینجوری نوشتم تا کانسپتش رو متوجه بشی حتما اررور سینتکس داره
2 - البته یه سری توابع شاید باشه که بعضی کارارو برات ساده تر کنه مثلا آیدی های کاربر ها رو شاید با pg_fetch_all_columns بتونی بخونی نیاز نباشه تو حلقه بزاری من ساده ترین شکل ممکن رو گفتم
3 - اگه از فریم ورک استفاده کنی احتمالا یه راهکاری برای اینکار داره نخاد دستی همش رو انجام بدی مثلا لاراول با استفاده از relation ها همه اینکار رو اتومات انجام میده