у меня две таблицы: -
A. users table
|--------------------------------------------------------|
| id | fname | lname | deleted |
|--------------------------------------------------------|
| 1 | Jax | Briggs | n |
|--------------------------------------------------------|
| 2 | Juli | Briggs | y |
|--------------------------------------------------------|
| 1 | Nacy | Blew | n |
|--------------------------------------------------------|
B. friend table
|-------------------------------------------------------------|
| id | user_id | receiver_id | status |
|-------------------------------------------------------------|
| 1 | 2 | 3 | 0 |
|-------------------------------------------------------------|
| 2 | 1 | 3 | 1 |
|-------------------------------------------------------------|
| 1 | 2 | 1 | 1 |
|-------------------------------------------------------------|
Я пытаюсь найти друзей пользователя, используя следующий запрос: -
"SELECT users.id, users.fname, users.lname FROM users,friend
WHERE
IF(friend.user_id != $id, friend.user_id = users.id, friend.receiver_id = users.id)
AND (friend.user_id = $id OR friend.receiver_id = $id)
AND (friend.status = 1)
AND (user.deleted = 'n')"
Если friend.status = 1, это означает, что получатель принял запрос о дружбе.
Если user.deleted = n, это означает, что учетная запись пользователя не была удалена
Как я могу преобразовать вышеуказанный запрос в Laravel Eloquent?
Я пытался сделать что-то вроде этого: -
$friendshipQuery = Friend::select('users.id', 'users.fname', 'users.lname', 'users.email')
->whereRaw('IF(friend.user_id != ' .$id. ', friend.user_id = users.id, friend.receiver_id = users.id)')
->where(array('friend.status' => Globals::FR_ACCEPTED)) // status which are accepted
->where(function($query) use ($id){
$query->where(array(
'friend.user_id' => $id // check whether user id matches sender id
))
->orWhere(array(
'friend.receiver_id' => $id // check whether user id matches receiver id
));
})
->where('users.deleted', 'n');
Почему-то я не могу объединить две таблицы, потому что и friend.user_id, и friend.receiver_id ссылаются на users.id.
Как мне этого добиться?
Есть ли другой способ сделать это эффективно?