php - 具有多个 where orwhere 和内部连接的 laravel mysql 查询

标签 php mysql laravel

如何在 Laravel 中准备以下 MySQL 查询?

这是我使用但没有成功的代码:

$user_list = DB::table('users')
->where('users.user_id' ,'=', $clientId)
->where('users.firstname', 'LIKE', '%'.$_POST['name'].'%')
->orWhere('users.lastname', 'LIKE', '%'.$_POST['name'].'%')
->orWhere('users.email', 'LIKE', '%'.$_POST['name'].'%')
->join('users_roles', 'users.id', '=', 'users_roles.user_id')                        
->where('users_roles.role_id', '=', Role::USER_PARTICIPANT)
->get();

条件必须是:

  1. users.user_id == $clientId
  2. users.firstname == '%'.$_POST['name'].'%' OR users.lastname == '%'.$_POST['name'].'%' OR users.email == '%'.$_POST['name'].'%'
  3. users_roles 和穿越 users.id == users_roles.user_id when users_roles.role_id == Role::USER_PARTICIPANT 的用户之间的内部连接

最佳答案

好吧,看来你的问题出在 嵌套 where

试试这个:

$name = $_POST['name']; // I'd recommend you use Input::get('name') instead...

$user_list = DB::table('users')
    ->where('users.user_id' ,'=', $clientId)
    ->where(function($query) use ($name){
        $query->where('users.firstname', 'LIKE', '%'.$name.'%');
        $query->orWhere('users.lastname', 'LIKE', '%'.$name.'%');
        $query->orWhere('users.email', 'LIKE', '%'.$name.'%');
    })
    ->join('users_roles', 'users.id', '=', 'users_roles.user_id')
    ->where('users_roles.role_id', '=', Role::USER_PARTICIPANT)
    ->get();

关于php - 具有多个 where orwhere 和内部连接的 laravel mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27063077/

相关文章:

python - 从 python 使用 ON DUPLICATE KEY UPDATE

php - 如何修复共享服务器中的 open_basedir 限制错误?

laravel - 如何确保Vuejs中挂载不同父组件时子组件不总是重新加载

php - 如何在ionic 4中将图像上传到数据库MYSQL?

javascript - 在 PHP 或 JS 中从 json 文件构建选择

php - 在以下场景中如何将表格从 php 文件打印到 TCPDF?

稀疏列的MySQL数据库设计

laravel - Laravel Eloquent获得与keyBy的关系

php - 如何将localhost phpmyadmin连接到android模拟器

php - PHP 中 HEREDOC 字符串内的正则表达式