как конвертировать raw sql в laravel - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь получить информацию из моего бэкенда в компонент vuejs multiselect. Но мне трудно переводить raw sql в laravel.

Это необработанный код, который мне нужно преобразовать:

select name, users.id
from users, ( select if(user_id = $bruker, friend_id, user_id ) as venn, friends.*
from friends
where user_id = $bruker or friend_id = $bruker) as venner
where users.id = venner.venn;

Я пробовал этот код, но в компоненте написано "список пуст". когда я изменяю whereRaw, я могу получить некоторую информацию в список, но не нужную информацию.

$users = \DB::table('users', 
DB::raw(
"select if(user_id = $bruker, friend_id, user_id ) as venn, 
 friends.*
 from friends
 where user_id = $bruker or friend_id = $bruker) as venner
"))
->whereRaw("users.id = venner.venn")
->pluck('name');

извините за плохой английский ..

1 Ответ

0 голосов
/ 09 апреля 2019

Я исправил свою проблему.все, что мне нужно было сделать, это сделать массив из запроса в коллекцию.таким образом я использую сырье sql.Мэйби не лучшее решение, но это сработало.

вот код:

 $bruker = \Auth::user()->id;
    $coll = \DB::select
        ("SELECT name
        from users, ( select if(user_id = $bruker, friend_id, user_id ) as venn, friends.*
        from friends
        where user_id = $bruker or friend_id = $bruker) as venner
        where users.id = venner.venn
        and accepted = 1
        ");

        $users = collect($coll)->pluck('name');

    return $users;

...