2016-03-27 5 views
0

に+マッチをフィルタリングするためにどのように私はPHP-RQLに非常に新しいですし、この(旧方法/データベース)のような単純なSQLクエリを行う方法を見つけ出すことはできません。RethinkDBとPHP-RQL同時に

方法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に切り替えたい捕獲しようとしていた正確な要素でした。

PHP-RQLクライアントでWHERE IN句を複数取得する方法を教えてもらえますか? 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); 
    */ 

ありがとうございます。

答えて

0

ので、->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]); 
    } 
+0

ご回答ありがとうございます。 しかし、グローバル変数を使用しないことを検討してください。 'result = r \ table("ページング ") - >フィルタ(関数$ doc)(' $ agency、$ search){' を参照することができます。あなたの無名関数内のそれらの変数 – PayamB

関連する問題