Я очень плохо знаком с PHP-RQL и не могу понять, как сделать простой SQL-запрос, подобный этому (старый метод / база данных):
Способ 1 (вид по умолчанию)
$mysql1 = 'SELECT 'html1' FROM `paging` WHERE `agency` IN ("USER1", "USER2", "USER3") AND `alias` != \'\' ORDER BY `id` DESC LIMIT 1000';
Способ 2 если бы был $_GET['search'];
настоящее время (поиск пользователя)
$mysql2 = " SELECT "html1" FROM `paging` WHERE `private` != '1' AND `alias` LIKE '%". $search . "%' ORDER BY `id` DESC LIMIT 2000";
Теперь это были почти те же самые элементы, которые я пытался извлечь из MySQL, который мы сейчас используем, но мы хотим перейти на RethinkDB.
Может кто-нибудь объяснить мне, как вы получаете несколько предложений WHERE IN в клиенте PHP-RQL? Это сильно отличается от того, как RethinkDB имеет свои документы на Java.
Я прочитал следующее:
RethinkDB версия До сих пор я собирался вместе (не работает вообще, и мне нужна помощь в понимании фильтра и соответствия).
$agency = "USER1|USER2|USER3";
$search = (isset($_GET['search']) ? $_GET['search'] : "..");
require_once("include/rdb/rdb.php");
$conn = r\connect('127.0.0.1', 28015, "birms");
$result = r\table('paging')->filter(array(
'agency' => match->$agency,
'alias' => match->$search,
'private' => 'false'))->run($conn);
foreach ($result as $doc) {
print_r($doc[$html_src]);
}
/* I toyed around with single returns, also didnt work....
return $doc('agency')->match($agency);
return $doc('search')->match($search);
return $doc('private')->match('false');
This does work; stock standard with no care for the above SQL
$result = r\table("paging")->orderBy(array('index' => r\desc('js_unique')))->limit(1000)->filter(array('private' => 'false'))->pluck($html_src)->run($conn);
*/
Спасибо.
Итак, используя ->rAnd
Я смог решить мой вопрос. Вот код Надеюсь, что некоторые люди могут понять это.
$agency = "USER1|USER2|USER3";
$search = (isset($_GET['search']) ? $_GET['search'] : "..");
require_once("include/rdb/rdb.php");
$conn = r\connect('127.0.0.1', 28015, "database");
$result = r\table("paging")->filter(function($doc){
global $agency;
global $search;
return $doc('agency')->match($agency)
->rAnd($doc('private')->ne('true'))
->rAnd($doc('alias')->match("(?i){$search}"));
})->orderBy(r\desc('js_unique'))->limit(1000)->pluck($html_src)->run($conn);
foreach ($result as $doc) {
print_r($doc[$html_src]);
}
Других решений пока нет …