[英]How to Add OR Condition in Laravel Sphinx query?
我正在使用fobia/laravel-sphinx
包並想添加一個條件,如city != 0 or state != 0
但or
條件不起作用並給出 tjis 錯誤:
“語法錯誤或訪問沖突:1064 sphinxql:語法錯誤,意外 OR,期望 $end 接近 'or ”
$query->where('state_id', '!=', 0)->orWhere('city_id', '!=', 0);
它使用\Fobia\Database\SphinxConnection\Eloquent\Model
你不能在 Sphinx 中使用 OR 條件
你可以用whereNotIn
和whereIn
處理它
這些是從開源項目中提取的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.