如何以编程方式将索引-> 值添加到 php 中的链
How to programmatically add index->value to a chain in php
这是我的第一个问题,所以请给我提示以改进我的问题表述等。
我已经尝试过在网上到处搜索,我认为答案就在那里,但我最大的问题是,我不知道该用什么词来搜索这个问题。
现在问题来了:
我目前正在使用:
https://github.com/sokil/php-mongo
创建一个应该在 mongodb 数据库集合中搜索 key/values 列表的搜索器。
我当前的代码看起来像这样(是的,有很多参数,等等。我知道,但我正在创建一个 drop 来替换太慢的遗留函数):
public function searchTasks(
int $start = 1,
int $end = 25,
string $type = null,
string $taskID = null,
string $siteID = null,
string $subject = null,
....... //Many more arguments following, but unused so far.
): \sokil\mongo\Cursor
{
return $this->collection
->find()
->where('siteID', $siteID)
->where('subject', $subject)
->whereGreaterOrEqual('status', 0);
}
问题是,只要参数不为空,我只想添加“where”子句,例如:
public function searchTasks(
int $start = 1,
int $end = 25,
string $type = null,
string $taskID = null,
string $siteID = null,
string $subject = null,
....... //Many more arguments following, but unused so far.
): \sokil\mongo\Cursor
{
$arguments = []
if($type != null) {
array_push($arguments, ["type" => $type]);
}
return $this->collection
->find()
->where($arguments)
->whereGreaterOrEqual('status', 0);
}
但是根据文档,这是不可能的,我没有找到像这样简单地添加通配符的方法:
public function searchTasks(
int $start = 1,
int $end = 25,
string $type = "*",
string $taskID = "*",
string $siteID = "*",
string $subject = "*",
....... //Many more arguments following, but unused so far.
): \sokil\mongo\Cursor
{
return $this->collection
->find()
->where('siteID', $siteID)
->where('subject', $subject)
->whereGreaterOrEqual('status', 0);
}
如果您能帮我搜索这个叫什么的词等等,我将不胜感激。
祝一切顺利
托比
您的代码似乎无法获取(执行)您正在构建的查询。您可以在执行前添加 where
子句。试试这个:
$query = $this->collection->find();
if ($siteID !== null) {
$query->where('siteID', $siteID);
}
return $query;
然后您稍后在您的函数findAll()
外部调用。
这是我的第一个问题,所以请给我提示以改进我的问题表述等。 我已经尝试过在网上到处搜索,我认为答案就在那里,但我最大的问题是,我不知道该用什么词来搜索这个问题。
现在问题来了: 我目前正在使用: https://github.com/sokil/php-mongo 创建一个应该在 mongodb 数据库集合中搜索 key/values 列表的搜索器。
我当前的代码看起来像这样(是的,有很多参数,等等。我知道,但我正在创建一个 drop 来替换太慢的遗留函数):
public function searchTasks(
int $start = 1,
int $end = 25,
string $type = null,
string $taskID = null,
string $siteID = null,
string $subject = null,
....... //Many more arguments following, but unused so far.
): \sokil\mongo\Cursor
{
return $this->collection
->find()
->where('siteID', $siteID)
->where('subject', $subject)
->whereGreaterOrEqual('status', 0);
}
问题是,只要参数不为空,我只想添加“where”子句,例如:
public function searchTasks(
int $start = 1,
int $end = 25,
string $type = null,
string $taskID = null,
string $siteID = null,
string $subject = null,
....... //Many more arguments following, but unused so far.
): \sokil\mongo\Cursor
{
$arguments = []
if($type != null) {
array_push($arguments, ["type" => $type]);
}
return $this->collection
->find()
->where($arguments)
->whereGreaterOrEqual('status', 0);
}
但是根据文档,这是不可能的,我没有找到像这样简单地添加通配符的方法:
public function searchTasks(
int $start = 1,
int $end = 25,
string $type = "*",
string $taskID = "*",
string $siteID = "*",
string $subject = "*",
....... //Many more arguments following, but unused so far.
): \sokil\mongo\Cursor
{
return $this->collection
->find()
->where('siteID', $siteID)
->where('subject', $subject)
->whereGreaterOrEqual('status', 0);
}
如果您能帮我搜索这个叫什么的词等等,我将不胜感激。 祝一切顺利 托比
您的代码似乎无法获取(执行)您正在构建的查询。您可以在执行前添加 where
子句。试试这个:
$query = $this->collection->find();
if ($siteID !== null) {
$query->where('siteID', $siteID);
}
return $query;
然后您稍后在您的函数findAll()
外部调用。