簡體   English   中英

如何在 Laravel Sphinx 查詢中添加 OR 條件?

[英]How to Add OR Condition in Laravel Sphinx query?

我正在使用fobia/laravel-sphinx包並想添加一個條件,如city != 0 or state != 0or條件不起作用並給出 tjis 錯誤:

“語法錯誤或訪問沖突:1064 sphinxql:語法錯誤,意外 OR,期望 $end 接近 'or ”

$query->where('state_id', '!=', 0)->orWhere('city_id', '!=', 0);

它使用\Fobia\Database\SphinxConnection\Eloquent\Model

你不能在 Sphinx 中使用 OR 條件
你可以用whereNotInwhereIn處理它

這些是從開源項目中提取的yii\sphinx\Query::orWhere的評價最高的真實世界 PHP 示例。 您可以對示例進行評分,以幫助我們提高示例的質量。 請訪問並查看示例

如果您的 sphinx/manticore 服務器版本不支持 OR 條件,則必須使用假屬性/表達式來“假”。

需要添加一列。 想要 SphinxQL 有點像

SELECT *, (state_id!=0)+(city_id!=0) as filter FROM index WHERE filter > 0

... 即僅包含 state_id 和 city_id 之和大於零的行。 即其中任何一個都不為零。

唉,閱讀 laravel-sphinx 源代碼,無法弄清楚如何添加到列列表中。 似乎需要添加到 $query->columns。 所以不知道是否像

 $query->columns[] = "(state_id!=0)+(city_id!=0) AS filter";
 $query->where('filter', '>', 0);

或者可能

 $query->select(['*',"(state_id!=0)+(city_id!=0) AS filter"])->where('filter', '>', 0);

似乎基本查詢構建器中有一個“選擇”方法https://laravel.com/api/5.5/Illuminate/Database/Query/Builder.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM