GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing foolcode.github.io — SphinxQL Query Builder - SphinxQL Query Builder Documentation SphinxQL Query Builder¶Creating a Builder¶<?php use Foolz\SphinxQL\Drivers\Mysqli\Connection; use Foolz\SphinxQL\SphinxQL; $conn = new Connection(); $conn->setParams(['host' => '127.0.0.1', 'port' => 9306]); $sq = new SphinxQL($conn); Supported Query Types¶
SELECT¶Basic select: $rows = (new SphinxQL($conn)) ->select('id', 'gid') ->from('rt') ->execute() ->getStored(); No explicit columns defaults to $sql = (new SphinxQL($conn)) ->select() ->from('rt') ->compile() ->getCompiled(); // SELECT * FROM rt FROM Variants¶Multiple indexes: $sql = (new SphinxQL($conn)) ->select('id') ->from('rt_main', 'rt_delta') ->compile() ->getCompiled(); Array input: $sql = (new SphinxQL($conn)) ->select('id') ->from(['rt_main', 'rt_delta']) ->compile() ->getCompiled(); Subquery as closure: $sql = (new SphinxQL($conn)) ->select() ->from(function ($q) { $q->select('id') ->from('rt') ->orderBy('id', 'DESC'); }) ->orderBy('id', 'ASC') ->compile() ->getCompiled(); // SELECT * FROM (SELECT id FROM rt ORDER BY id DESC) ORDER BY id ASC MATCH¶Simple full-text match: $rows = (new SphinxQL($conn)) ->select() ->from('rt') ->match('content', 'content') ->execute() ->getStored(); Multiple $rows = (new SphinxQL($conn)) ->select() ->from('rt') ->match('title', 'value') ->match('content', 'directly') ->execute() ->getStored(); Array field list: $rows = (new SphinxQL($conn)) ->select() ->from('rt') ->match(['title', 'content'], 'to') ->execute() ->getStored(); Half-escape mode (lets operators like $rows = (new SphinxQL($conn)) ->select() ->from('rt') ->match('content', 'directly | lazy', true) ->execute() ->getStored(); Use $rows = (new SphinxQL($conn)) ->select() ->from('rt') ->match(function ($m) { $m->field('content') ->match('directly') ->orMatch('lazy'); }) ->execute() ->getStored(); WHERE¶Supported styles: $sq->where('gid', 304); // gid = 304 $sq->where('gid', '>', 300); // gid > 300 $sq->where('id', 'IN', [11, 12, 13]); // id IN (...) $sq->where('gid', 'BETWEEN', [300, 400]); // gid BETWEEN ... Grouped boolean clauses: $sql = (new SphinxQL($conn)) ->select() ->from('rt') ->where('gid', 200) ->orWhereOpen() ->where('gid', 304) ->where('id', '>', 12) ->whereClose() ->compile() ->getCompiled(); // SELECT * FROM rt WHERE gid = 200 OR ( gid = 304 AND id > 12 ) HAVING¶
$sql = (new SphinxQL($conn)) ->select('gid') ->from('rt') ->groupBy('gid') ->having('gid', '>', 100) ->orHavingOpen() ->having('gid', '<', 10) ->having('gid', '>', 9000) ->havingClose() ->compile() ->getCompiled(); // SELECT gid FROM rt GROUP BY gid HAVING gid > 100 OR ( gid < 10 AND gid > 9000 ) JOIN¶$sql = (new SphinxQL($conn)) ->select('a.id') ->from('rt a') ->leftJoin('rt b', 'a.id', '=', 'b.id') ->where('a.id', '>', 1) ->compile() ->getCompiled(); // SELECT a.id FROM rt a LEFT JOIN rt b ON a.id = b.id WHERE a.id > 1 Cross join: $sql = (new SphinxQL($conn)) ->select('a.id') ->from('rt a') ->crossJoin('rt b') ->compile() ->getCompiled(); // SELECT a.id FROM rt a CROSS JOIN rt b GROUP / ORDER / LIMIT / OPTION¶$sql = (new SphinxQL($conn)) ->select() ->from('rt') ->groupBy('gid') ->groupNBy(3) ->withinGroupOrderBy('id', 'DESC') ->orderBy('id', 'ASC') ->limit(0, 20) ->compile() ->getCompiled();
$sql = (new SphinxQL($conn)) ->select('id') ->from('rt') ->orderByKnn('embeddings', 5, [0.1, 0.2, 0.3]) ->compile() ->getCompiled(); // SELECT id FROM rt ORDER BY KNN(embeddings, 5, [0.1,0.2,0.3]) ASC Options: $sql = (new SphinxQL($conn)) ->select() ->from('rt') ->option('comment', 'this should be quoted') ->compile() ->getCompiled(); // SELECT * FROM rt OPTION comment = 'this should be quoted' Array option values are compiled as $sql = (new SphinxQL($conn)) ->select() ->from('rt') ->option('field_weights', [ 'title' => 80, 'content' => 35, 'tags' => 92, ]) ->compile() ->getCompiled(); // SELECT * FROM rt OPTION field_weights = (title=80, content=35, tags=92) INSERT / REPLACE¶
(new SphinxQL($conn)) ->insert() ->into('rt') ->set([ 'id' => 10, 'gid' => 9001, 'title' => 'the story of a long test unit', 'content' => 'once upon a time there was a foo in the bar', ]) ->execute();
(new SphinxQL($conn)) ->replace() ->into('rt') ->columns('id', 'title', 'content', 'gid') ->values(10, 'modifying the same line again', 'because i am that lazy', 9003) ->values(11, 'i am getting really creative with these strings', "i'll need them to test MATCH!", 300) ->execute(); UPDATE¶Standard update: $affected = (new SphinxQL($conn)) ->update('rt') ->where('id', '=', 11) ->value('gid', 201) ->execute() ->getStored(); Late $sql = (new SphinxQL($conn)) ->update() ->into('rt') ->set(['gid' => 777]) ->where('id', '=', 11) ->compile() ->getCompiled(); // UPDATE rt SET gid = 777 WHERE id = 11 MVA update: (new SphinxQL($conn)) ->update('rt') ->where('id', '=', 15) ->value('tags', [111, 222]) ->execute(); DELETE¶$affected = (new SphinxQL($conn)) ->delete() ->from('rt') ->where('id', 'IN', [11, 12, 13]) ->match('content', 'content') ->execute() ->getStored(); Raw Query¶$rows = (new SphinxQL($conn)) ->query('DESCRIBE rt') ->execute() ->getStored(); Transactions¶$sq = new SphinxQL($conn); $sq->transactionBegin(); // write operations $sq->transactionCommit(); // or $sq->transactionRollback(); Reset Methods¶You can reuse a builder and selectively clear parts of the query:
Result Objects¶
For batch execution see Multi-Query Builder. |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |