Это мой первый вопрос, поэтому, пожалуйста, дайте мне подсказки по улучшению формулировки моего вопроса, и т. Д. c. Я уже пробовал искать повсюду в Интернете, и думаю, что ответ есть, но моя самая большая проблема в том, что я не знаю, какие слова использовать для поиска этой проблемы.
Теперь к проблеме: я в настоящее время используется: https://github.com/sokil/php-mongo Для создания поисковика, который должен выполнять поиск по списку ключей / значений в коллекции базы данных mongodb.
Мой текущий код выглядит следующим образом (Да, способ множества аргументов и т.д. c. Я знаю, но я создаю каплю вместо устаревшей функции, которая работает слишком медленно):
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);
}
Если у вас есть способ помочь мне с поисковыми словами для того, что это называется, et c. Я буду очень признателен. Всего наилучшего, Тоби