Example #1
0
 /**
  * Join mapped table(s).
  *
  * @param  \Sofa\Eloquence\Builder $query
  * @param  string $target
  * @return string
  */
 protected function joinMapped(Builder $query, $target)
 {
     $query->prefixColumnsForJoin();
     $parent = $this;
     foreach (explode('.', $target) as $segment) {
         list($table, $parent) = $this->joinSegment($query, $segment, $parent);
     }
     return $table;
 }
Example #2
0
 /**
  * Join meta attributes table.
  *
  * @param  \Sofa\Eloquence\Builder $query
  * @param  string $column
  * @return string
  */
 protected function joinMeta(Builder $query, $column)
 {
     $query->prefixColumnsForJoin();
     $alias = $this->generateMetaAlias();
     $table = (new Attribute())->getTable();
     $query->leftJoin("{$table} as {$alias}", function ($join) use($alias, $column) {
         $join->on("{$alias}.metable_id", '=', $this->getQualifiedKeyName())->where("{$alias}.metable_type", '=', $this->getMorphClass())->where("{$alias}.meta_key", '=', $column);
     });
     return $alias;
 }