1: <?php
2:
3: namespace PHPixie\ORM\Planners\Planner;
4:
5: class Query extends \PHPixie\ORM\Planners\Planner
6: {
7: public function setSource($query, $source)
8: {
9: $this->selectStrategy($query)->setSource($query, $source);
10: return $query;
11: }
12:
13: public function setBatchData($query, $fields, $data)
14: {
15: $this->selectStrategy($query)->setBatchData($query, $fields, $data);
16: return $query;
17: }
18:
19: protected function selectStrategy($query)
20: {
21: if ($query instanceof \PHPixie\Database\Type\SQL\Query) {
22: return $this->strategy('sql');
23: }
24:
25: if($query instanceof \PHPixie\Database\Driver\Mongo\Query) {
26: return $this->strategy('mongo');
27: }
28:
29: $class = get_class($query);
30: throw new \PHPixie\ORM\Exception\Planner("No strategies defined for '$class' queries");
31: }
32:
33: protected function buildSqlStrategy()
34: {
35: return new \PHPixie\ORM\Planners\Planner\Query\Strategy\SQL();
36: }
37:
38: protected function buildMongoStrategy()
39: {
40: return new \PHPixie\ORM\Planners\Planner\Query\Strategy\Mongo();
41: }
42:
43: }
44: