Бьюсь об заклад, ваш SQL будет неверным, когда вы используете его, как Yiu сделал.Подсказка: вы устанавливаете no () для разделения вашего (дай мне все n, где (x - это что-то или y - это что-то другое), а z - это правда).Вы делаете все это без (), поэтому он будет искать (x - это что-то) или y - это что-то другое, а z - это правда, поэтому все строки будут найдены, где z - это правда, а y - что-то другое, поэтому этот результат неверен.
Попробуйте
$rowsget = DB::table('friends')
->where(function (Builder $query) use ($uid) {
$query->where('requesteeid', $uid)
->orWhere('inboundid', $uid);
})
->where('approved', true)
->get();
Вы всегда можете получить SQL-запрос, используя
$rowsget = DB::table('friends')
->where(function (Builder $query) use ($uid) {
$query->where('requesteeid', $uid)
->orWhere('inboundid', $uid);
})
->where('approved', true)
->toSql();
Измените свой код на это:
$rowfetchfriend = [];
if(count($rowsget) > 0){
foreach($rowsget as $get) {
$getrequestee = $get->requesteeid;
$getinbound = $get->inboundid;
$rowfetchfriend += DB::table('users')->where('id', $getrequestee)-
>orWhere('id', $getinbound)->get(['id', 'avatar', 'username']);
}
Ваше закрытиескобка неверна, и вы должны сложить результаты за цикл.Я бы выполнил другой sql, где я получаю свои результаты так, как я хочу, и не запускаю 2 запроса для этого (поиск "joins").