gpt4 book ai didi

mysql - 顺序为 "and"和 "or"的对象列表查询的子条件

转载 作者:行者123 更新时间:2023-11-29 20:16:40 25 4
gpt4 key购买 nike

我想使用多个参数过滤结果: bool 状态、类别以及将在标题或描述(本地化字段)上搜索的关键字。

我是这方面的新手。当我省略描述关键字条件时,我成功地使查询工作:

$advertList = new Object\Advert\Listing();
$advertList->setOrderKey("date");
$advertList->setOrder("DESC");
$conditions = [];
if ($this->getParam("keyword"))
{
$conditions[] = " title LIKE " . $advertList->quote("%" . $this->getParam("keyword") . "%");
}
if ($this->getParam("reqoffer")) {
$conditions[] = "reqoffer LIKE " . $advertList->quote("%" . $this->getParam("reqoffer") . "%");
}
if($this->getParam("category")) {
$conditions[] = "category__id = " . $this->getParam("category");
}
$advertList->setCondition(implode(" AND ", $conditions));

但是当我想添加我的“或条件”时:

$conditions[] = "( title LIKE " . $advertList->quote("%" . $this->getParam("keyword") . "%") . 
// " OR shorttext LIKE " . $advertList->quote("%" . $this->getParam("keyword") . "% )");

我无法成功对“OR”括号中的关键字进行第一次查询:我的意思是最后,即使类别或要求提供错误,只要标题正确,我也会得到结果...

我已经寻找了很多个小时并尝试了很多事情。我找不到同样的问题。我相信这对你们中的一些人来说是显而易见的。如果可以的话请帮忙。

提前致谢。

最佳答案

如果你想构建像 WHERE (a AND b) OR c 这样的条件,你需要这样做(伪代码):

$or_conditions = [];
$and_conditions = [];
if (needA)
$and_conditions[] = "a";
if (needB)
$and_conditions[] = "b";
$or_conditions[] = "(" . implode(" AND ", $and_conditions) . ")";
$advertList->setCondition(implode(" OR ", $or_conditions));

关于mysql - 顺序为 "and"和 "or"的对象列表查询的子条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39728042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com