Esempio n. 1
0
 protected function query_contrib($query, $is_root)
 {
     parent::query_contrib($query, $is_root);
     // Entities and aliases :
     $trg_entity = $this->trg_entity();
     $trg_alias = $this->trg_set->name();
     // From :
     $trg_entity->query_from($query, $trg_alias);
     // Restrict result with where conditions (in WHERE clause !!!) :
     foreach ($this->where as $w) {
         $trg_entity->query_where($query, $trg_alias, $w['field'], $w['op'], $w['expr']);
     }
 }
Esempio n. 2
0
 protected function query_contrib($query, $is_root)
 {
     parent::query_contrib($query, $is_root);
     // Entities and aliases :
     $src_entity = $this->src_entity();
     $trg_entity = $this->trg_entity();
     $src_alias = $this->src_set->name();
     $trg_alias = $this->trg_set->name();
     // Root ? Must base query on src set :
     if ($is_root) {
         $pk = $src_entity->pk();
         $src_entity->query_select($query, $src_alias, $pk);
         $src_entity->query_from($query, $src_alias);
         if ($this->is_unitary()) {
             foreach ($pk as $f) {
                 $src_entity->query_where($query, $src_alias, $f, '=', DB::expr(':__' . $f));
             }
         } else {
             $src_entity->query_where($query, $src_alias, $pk[0], 'IN', DB::expr(':__pks'));
         }
     }
     // Add joins to trg entity :
     $this->relationship->join($query, $src_alias, $trg_alias);
     // Restrict result with where conditions (in ON clause !!!) :
     foreach ($this->where as $w) {
         $expr = is_object($w['expr']) ? $w['expr'] : DB::expr(Database::instance()->quote($w['expr']));
         $trg_entity->query_on($query, $trg_alias, $w['field'], $w['op'], $expr);
     }
 }