php Laravel Eloquent硬编码的值在whereNotIn

2vuwiymt  于 2023-04-04  发布在  PHP
关注(0)|答案(2)|浏览(134)

在Laravel雄辩的查询使用多个列的whereNotIn子句我需要硬编码的DB::raw列的值应该来自一个变量(循环变量).什么是最好的方式来实现这一点?这是我的查询,我需要改变硬编码的1在DB::raw('(1,user_profile.user_id')

$otherProfiles = Userprofile::where('user_id', '!=', $profile->user_id)
            ->where(function ($query) use ($userInterests) {
                foreach ($userInterests as $interest) {
                    $query->orWhere('interest', 'like', "%$interest%");
                };
            })
            ->whereNotIn(DB::raw('(1, user_profile.user_id)'), function ($query) {
                $query->select('sender_id', 'receiver_id')
                    ->from('email_reports');
            })
         
            ->inRandomOrder()
            ->get();
jei2mxaa

jei2mxaa1#

通过简单的连接来修复它添加的代码是DB::raw('('. $profile-〉user_id . ',user_profile.user_id)')

yi0zb3m4

yi0zb3m42#

为动态值创建一个变量$id

$otherProfiles = Userprofile::where('user_id', '!=', $profile->user_id)
    ->where(function ($query) use ($userInterests) {
        foreach ($userInterests as $interest) {
            $query->orWhere('interest', 'like', "%$interest%");
        };
    })
    ->whereNotIn('user_id', $id), function ($query) {
        $query->select('sender_id', 'receiver_id')
            ->from('email_reports');
    })
    ->inRandomOrder()
    ->get();

相关问题