示例#1
0
 /**
  * @param Database      $database Parent database.
  * @param QueryCompiler $compiler Driver specific QueryGrammar instance (one per builder).
  * @param array         $from     Initial set of table names.
  * @param array         $columns  Initial set of columns to fetch.
  */
 public function __construct(Database $database, QueryCompiler $compiler, array $from = [], array $columns = [])
 {
     parent::__construct($database, $compiler);
     $this->tables = $from;
     if (!empty($columns)) {
         $this->columns = $this->fetchIdentifiers($columns);
     }
 }
 /**
  * @param string $class
  * @param ORM    $orm
  * @param Loader $loader
  */
 public function __construct($class, ORM $orm = null, Loader $loader = null)
 {
     $this->class = $class;
     $this->orm = $this->saturate($orm, ORM::class);
     $this->columns = $this->dataColumns = [];
     //We aways need primary loader
     if (empty($this->loader = $loader)) {
         //Selector always need primary data loaded to define data structure and perform query
         //parsing, in most of cases we can easily use RootLoader associated with primary record
         //schema
         $this->loader = new RootLoader($this->orm, null, $this->orm->schema($class));
     }
     //Every ORM loader has ability to declare it's primary database, we are going to use
     //primary loader database to initiate selector
     $database = $this->loader->dbalDatabase();
     //AbstractSelect construction
     parent::__construct($database, $database->driver()->queryCompiler($database->getPrefix()));
 }