Example #1
0
 /**
  * Применяет JOIN для BELONGS_TO
  * @param ISelectBuilder $selectBuilder
  * @param BelongsToRelationField $relationField поле по которому осуществляется связь
  * @param string $relationSourceAlias алиас таблицы для $relationField
  * @param ICollection $targetCollection коллекция НА которую осуществляется связь
  * @return $this
  */
 protected function applyJoinForBelongsToRelation(ISelectBuilder $selectBuilder, BelongsToRelationField $relationField, $relationSourceAlias, ICollection $targetCollection)
 {
     $targetTableName = $targetCollection->getMetadata()->getCollectionDataSource()->getSourceName();
     $targetTableAlias = $relationSourceAlias . self::ALIAS_SEPARATOR . $relationField->getName();
     $targetPk = $targetCollection->getIdentifyField();
     $leftColumn = $targetTableAlias . self::FIELD_SEPARATOR . $targetPk->getColumnName();
     $rightColumn = $relationSourceAlias . self::FIELD_SEPARATOR . $relationField->getColumnName();
     $selectBuilder->leftJoin(array($targetTableName, $targetTableAlias))->on($leftColumn, '=', $rightColumn);
     return $this;
 }
 /**
  * {@inheritdoc}
  */
 public function storeNewBelongsToRelation(BelongsToRelationField $belongsToRelation, IObject $object, IObject $relatedObject)
 {
     $data = [];
     try {
         $data = $this->relatedObjects->offsetGet($object);
     } catch (\UnexpectedValueException $e) {
     }
     $data[$belongsToRelation->getName()] = $relatedObject;
     $this->relatedObjects->offsetSet($object, $data);
 }