Присоединяйся в кулуарах с делом и заявлением - PullRequest
0 голосов
/ 06 октября 2018

У меня следующий запрос в Mysql:

SELECT 
U.* FROM
`cr_friends` AS `cf`  JOIN
`users` AS `U` WHERE
    `cf`.`status` = 1
    AND 
    (
        CASE
            WHEN `cf`.`friend_to` = 1 THEN `cf`.`friend_from` = `U`.`id`
            WHEN `cf`.`friend_from` = 1 THEN `cf`.`friend_to` = `U`.`id`
        END
    ) GROUP BY `U`.`id` ORDER BY `cf`.`created` desc;

Я пытаюсь поместить это в laravel следующим образом:

$myFriendsData = DB::table('cr_friends as cf')
        ->where('cf.status', '=', 1)
        ->Join('users as U')
        ->select(
            DB::raw(
                '(
                    CASE WHEN cf.friend_to = ' . auth()->user()->id . ' THEN cf.friend_from = U.id  END
                    CASE WHEN cf.friend_from = ' . auth()->user()->id . ' THEN cf.friend_to = U.id  END
                )'
            )
        )
        ->select('U.*')
        ->orderBy('U.id', 'desc')
        ->get();

, но не удалось, так как запрос mysqlотлично работает, но этот запрос laravel не работает.

На самом деле, я думаю, что есть проблема с Join, которую я помещаю в laravel, запрашивая еще один параметр, но в этом случае я не могу сделатьэто.

Можете ли вы, ребята, наставить меня, чтобы я мог этого достичь.

Спасибо Randheer

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Обеспечьте пустое закрытие для join() и используйте whereRaw():

$myFriendsData = DB::table('cr_friends as cf')
    ->where('cf.status', '=', 1)
    ->join('users as U', function() {})
    ->whereRaw(
        '(
            CASE 
                 WHEN cf.friend_to = ' . auth()->user()->id . ' THEN cf.friend_from = U.id
                 WHEN cf.friend_from = ' . auth()->user()->id . ' THEN cf.friend_to = U.id  
            END
        )'
    )
    ->select('U.*')
    ->orderBy('U.id', 'desc')
    ->get();
0 голосов
/ 06 октября 2018

используйте это

$myFriendsData = DB::table('cr_friends as cf')
    ->Join('users as U')
    ->where('cf.status', '=', 1)
    ->where(
        DB::raw(
            '(
                CASE WHEN cf.friend_to = ' . auth()->user()->id . ' THEN cf.friend_from = U.id  END
                CASE WHEN cf.friend_from = ' . auth()->user()->id . ' THEN cf.friend_to = U.id  END
            )'
        )
    )
    ->select('U.*')
    ->orderBy('U.id', 'desc')
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...