首页 > 解决方案 > 需要帮助将 SQL 查询转换为 Laravel eloquent

问题描述

我有这个 SQL 查询:

SELECT * FROM `user` WHERE `id` IN(
    SELECT  DISTINCT if(`sender_id`='2',`receiver_id` ,`sender_id`) AS `id`
    FROM    `message`
    WHERE   (`receiver_id`  = '2' OR `sender_id` = '2')
    )

我需要转换为 Laravel 雄辩。问题是,我不知道如何转换 IF 函数。

标签: phpmysqllaraveleloquent

解决方案


$subquery = DB::table('message')
    ->selectRaw("if(sender_id = ?, receiver_id, sender_id) AS id")
    ->distinct()
    ->where(function($query){
        $query
            ->where('receiver_id', '?')
            ->orWhere('sender_id', '?');
    })
    ->toSql();

$query = DB::table('user')
    ->whereRaw('id IN (' . $subquery . ')', [2, 2, 2])
    ->get();

在此处输入图像描述


推荐阅读