【发布时间】:2016-02-16 15:22:38
【问题描述】:
我希望标题能很好地描述我的问题。
我试图在 laravel 中创建一个地理搜索功能。查询本身是正确的。现在我尝试从我的表中获取所有文章,这些文章与之前查询的获取的邮政编码匹配。我使用的所有功能都可以在这里找到:Laravel 5 add results from query in a foreach to array)。但现在我想在多个或动态 where 子句(使用 or)中执行一个查询。
我之前查询的print_r($zipcodes)(获取邮政编码$zipcodes = $this->getZipcodes($zipCoordinateId, $distance);范围内的所有邮政编码)输出:
Array
(
[0] => stdClass Object
(
[zc_zip] => 13579
[distance] => 0
)
[1] => stdClass Object
(
[zc_zip] => 12345
[distance] => 2.228867736739
)
[2] => stdClass Object
(
[zc_zip] => 98765
[distance] => 3.7191570094844
)
)
那么当我想要执行以下操作时,我在 laravel 中的查询应该是什么样子?
SELECT *
FROM articles
WHERE zipcode = '13579'
OR zipcode = '98765'
OR zipcode = '12345';
提前谢谢你, 量子论者
更新
使用 balintant 的解决方案可以正常工作。这是我的代码:
// grabs all zipcodes matching the distance
$zipcodes = $this->getZipcodes($zipCoordinateId, $distance);
foreach ($zipcodes AS $key=>$val)
{
$zipcodes[$key] = (array) $val;
}
$codes = array_column($zipcodes, 'zc_zip');
$articles = Article::whereIn('zipcode', $codes)->get();
return view('pages.intern.articles.index', compact('articles'));
【问题讨论】:
-
使用
IN(...)sql构造。在 Laravel 中有whereIn()Builder 方法。看看吧。
标签: sql laravel where-clause