【问题标题】:Laravel Eloquent hardcoded value in whereNotInLaravel Eloquent 硬编码值在 whereNotIn
【发布时间】:2020-11-06 23:31:06
【问题描述】:

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

$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();

【问题讨论】:

  • 你能告诉我们你想要的表结构和预期结果吗?

标签: php laravel eloquent subquery


【解决方案1】:

只需简单的连接即可修复它 添加的代码是 DB::raw('('.$profile->user_id .', user_profile.user_id)')

【讨论】:

    【解决方案2】:
    create a variable as $id for your dynamic value..
    $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();
    

    【讨论】:

      猜你喜欢
      • 2021-06-14
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2015-07-22
      相关资源
      最近更新 更多