Example #1
0
 /**
  * Get base query
  * @return Builder
  */
 public function query()
 {
     $query = new Builder(null);
     $query->setDI($this->di);
     $query->from($this->class);
     $manager = $this->model()->getModelsManager();
     /** @var RelationInterface[] $belongsToRelations */
     $belongsToRelations = $manager->getBelongsTo($this->model());
     if (!empty($belongsToRelations)) {
         foreach ($belongsToRelations as $belongsToRelation) {
             $referencedModel = $belongsToRelation->getReferencedModel();
             $referencedField = $belongsToRelation->getReferencedFields();
             $field = $belongsToRelation->getFields();
             $alias = $belongsToRelation->getOptions()['alias'];
             $query->innerJoin($referencedModel, "{$alias}.{$referencedField} = {$this->class}.{$field}", $alias);
         }
     }
     /** @var RelationInterface[] $hasManyRelations */
     $hasManyRelations = $manager->getHasMany($this->model());
     if (!empty($hasManyRelations)) {
         foreach ($hasManyRelations as $hasManyRelation) {
             $referencedModel = $hasManyRelation->getReferencedModel();
             $referencedField = $hasManyRelation->getReferencedFields();
             $field = $hasManyRelation->getFields();
             $alias = $hasManyRelation->getOptions()['alias'];
             $query->leftJoin($referencedModel, "{$alias}.{$referencedField} = {$this->class}.{$field}", $alias);
             $query->groupBy("{$this->class}.id");
         }
     }
     return $query;
 }
Example #2
0
 private function createSearchBuilder()
 {
     $builder = new Builder();
     $builder->columns(['ping.id', 'ping.batchId', 'ping.proxyId', 'ping.httpCode', 'ping.duration', 'ping.createdAt', 'ping.updatedAt', 'ping.error', 'b.urlId', 'b.name', 'u.address as urlAddress', 'pr.address as proxyAddress']);
     $builder->addFrom('ping');
     $builder->innerJoin('proxy', 'pr.id = ping.proxyId', 'pr');
     $builder->innerJoin('batch', 'b.id = ping.batchId', 'b');
     $builder->innerJoin('url', 'u.id = b.urlId', 'u');
     return $builder;
 }
Example #3
0
 private function createSearchBuilder()
 {
     $builder = new Builder();
     $builder->columns(['ping.id as pingId', 'ping.httpCode', 'ping.duration', 'b.id as batchId', 'b.name', 'c.id as countryId', 'c.code as proxyCountryCode', 'u.id as urlId', 'u.address as urlAddress', 'pr.id as proxyId', 'pr.address as proxyAddress']);
     $builder->addFrom('ping');
     $builder->innerJoin('proxy', 'pr.id = ping.proxyId', 'pr');
     $builder->innerJoin('country', 'c.id = pr.countryId', 'c');
     $builder->innerJoin('batch', 'b.id = ping.batchId', 'b');
     $builder->innerJoin('url', 'u.id = b.urlId', 'u');
     return $builder;
 }