php - laravel 循环中的多个 where 子句

标签 php mysql laravel laravel-4

我几乎希望查询选择 25 岁且高度在 150-170cm 或 190-200cm 之间的所有用户记录。

我在下面写下了这个查询。然而,问题是它不断增加 25 岁或 190-200 厘米的人,而不是 25 岁的 150-170 岁的人或 25 岁的 190-200 厘米高的人。我怎样才能解决这个问题?谢谢

 $heightarray=array(array(150,170),array(190,200));
 $user->where('age',25);

   for($i=0;$i<count($heightarray);i++){
 if($i==0){
   $user->whereBetween('height',$heightarray[$i])
}else{
   $user->orWhereBetween('height',$heightarray[$i])
 }
 }
      $user->get();

编辑:我尝试了高级 wheres ( http://laravel.com/docs/queries#advanced-wheres ) 但它对我不起作用,因为我无法将 $heightarray 参数传递到闭包中。

来自 laravel 文档

 DB::table('users')
        ->where('name', '=', 'John')
        ->orWhere(function($query)
        {
            $query->where('votes', '>', 100)
                  ->where('title', '<>', 'Admin');
        })
        ->get();

最佳答案

Jeemusu并且 OP 声明,您需要使用 advance wheres . 但是,如果您想将变量传递给闭包函数,则需要使用“use”方法:

$heightarray = array(array(150,170),array(190,200));

DB::table('users')
  ->where('name', '=', 'John')
  ->orWhere(function($query) use ($heightarray){
    //...
  })
  ->get();

关于php - laravel 循环中的多个 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19485893/

相关文章:

PHP isset() 返回 false 什么时候应该返回 true?

PHP 服务器端打印 Ubuntu 服务器

php - 将查询结果放入数组然后内爆?

php - 我的 MySql 语法问题(我认为)

php - Laravel: Blade View 中 Controller 回显的位置

PHP $_POST 数组为空,但是 $_GET 完好无损

php - 如何在Select查询中使用IF或Case语句?

php - 在 Android 应用程序中从 Mysql 加载照片

php - 在 Laravel 应用程序中访问核心 PHP 应用程序 session 时遇到的问题

php - 从 repo//PHP laravel 克隆项目后数据库出现问题