php - 我如何在 Laravel 中使用 BETWEEN 和 AND

标签 php mysql laravel laravel-4

您好,我正在尝试使用以下内容,但不确定如何解决此问题

SELECT * FROM search_users  
WHERE 
  match(first_name,last_name,country,city,location,nationality,short_bio) 
  against (?)   
AND 
  search_users.loc_lng BETWEEN '-0.24272918701172' AND '-0.24272918701172' 
AND 
  search_users.loc_lat BETWEEN '51.47026338272' AND '51.47026338272'

我正在尝试编写一个与

完全相同的 laravel 查询
select * from search_users  
where 
  ......   
  and search_users.loc_lng BETWEEN '-0.24272918701172' AND '-0.24272918701172' 
  AND search_users.loc_lat BETWEEN '51.47026338272' AND '51.47026338272'

最佳答案

如果您只想构建查询/获取纯数据而无需任何逻辑,您可以简单地使用查询构建器:

$results = DB::table('search_users')
           ->where('first_name', $firstname)
           ->where('last_name', $last_name)
           ->where('country', $country) //and so on
           ->whereBetween('loc_lng', array(-0.24272918701172, -0.24272918701172))
           ->whereBetween('loc_lat', array(51.47026338272, 51.47026338272))
           ->get();

果然,如果您正在使用模型,您可以使用相同的语法:

$users = User::where('key1', $value1)
             ->where('key2', $value2)
             ->whereBetween('loc_lng', array(-0.24272918701172, -0.24272918701172))
             ->whereBetween('loc_lat', array(51.47026338272, 51.47026338272))
             ->get();

关于如何在 eloquent 中使用 AND 的问题的一些额外解释:

如果您使用 2 个或更多 where(),则默认使用

AND。所以

DB::table('search_users')->where('first_name', $firstname)
                         ->where('last_name', $last_name)

等于

SELECT * FROM search_users  WHERE first_name = ? AND last_name = ?

对于OR,你可以使用orWhere():

DB::table('search_users')->where('first_name', $firstname)
                         ->orWhere('last_name', $othername)

等于

SELECT * FROM search_users  WHERE first_name = ? OR first_name = ?

有时您可能需要更复杂的东西,例如:

SELECT * FROM search_users  
WHERE first_name = ? 
  AND (last_name = ? OR last_name = ?)
  AND age > 27

在 Eloquent 中,这将是:

DB::table('search_users')
      ->where('first_name', $firstname)
      ->where(function($query) {
          $query->where('last_name', $lastName1);
          $query->orWhere('last_name', $lastName2);
      })
      ->where('age', '>', 27)

关于php - 我如何在 Laravel 中使用 BETWEEN 和 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22176942/

相关文章:

php - 无法通过 phpMyAdmin 连接到 MySQL

php - 如何在不破坏字符集的情况下正确地将网站迁移到新服务器?

PHP/MySql 改变数组格式

mysql - 在 Red Hat 上安装 Maria DB (mysql)。安装后如何启动服务

php - 从 Laravel 中的对象中删除数组

php - OOP PHP MySQL 返回多行和变量

php - 在 Zend 框架 2 中显示为来自 JSON 的网格

PHP SQL 选择日期之间的行

php - Laravel 实现每组最大 n 个

laravel - Artisan 在 Laravel 框架中的作用是什么?