如何在 laravel 中使用 BETWEEN 和 AND
Posted
技术标签:
【中文标题】如何在 laravel 中使用 BETWEEN 和 AND【英文标题】:How do I use BETWEEN and AND in laravel 【发布时间】:2014-04-06 06:46:52 【问题描述】:您好,我正在尝试使用以下内容,但不确定如何解决此问题
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'
【问题讨论】:
不回答你的问题但值得一提:dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html 问题是在 laravel 中创建查询而不是如何使用地理位置...对不起,如果我的问题第一次不清楚 【参考方案1】:如果您只想构建查询/获取没有任何逻辑的纯数据,您可以简单地使用查询构建器:
$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()
s,则默认使用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)
【讨论】:
以上是关于如何在 laravel 中使用 BETWEEN 和 AND的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Access SQL 中使用 BETWEEN 和 AND 来过滤日期范围?
如何在 Elixir Ecto 中使用“between”创建 SQL