35 $res = $this->tableClass::getList([
36 'select' => [
'*',
'FIELDS',
'LOCATION',
'LOCATION.NAME',
'LINKS'],
37 'filter' => [
'=ID' => $id],
46 $result = Entity\Address\Converter\OrmConverter::convertFromOrm(
$res);
62 $res = $this->tableClass::getList([
63 'select' => [
'*',
'FIELDS',
'LOCATION',
'LOCATION.NAME',
'LOCATION.FIELDS',
'LINKS'],
66 '=LINKS.ENTITY_TYPE' => $entityType,
68 ])->fetchCollection();
70 return Entity\Address\Converter\OrmConverter::convertCollectionFromOrm(
$res);
86 if(!
$res->isSuccess())
104 $address->setId(
$result->getId());
108 if ($address->getId() <= 0 || !
$result->isSuccess())
113 $this->saveFieldCollection($address);
114 $this->saveLinkCollection($address);
119 protected function saveFieldCollection(
Entity\
Address $address): void
121 if ($address->getId() <= 0)
128 $this->fieldTableClass::deleteByAddressId($address->getId());
132 foreach ($address->getFieldCollection() as $field)
134 $value = $field->getValue();
137 'TYPE' => $field->getType(),
139 'ADDRESS_ID' => $address->getId(),
146 $sqls =
$connection->getSqlHelper()->prepareMergeMultiple(
147 $this->fieldTableClass::getTableName(),
154 foreach ($sqls as $sql)
160 protected function saveLinkCollection(Entity\Address $address)
162 if ($address->getId() <= 0)
164 throw new ArgumentNullException(
'Address Id');
169 $this->linkTableClass::deleteByAddressId($address->getId());
173 foreach ($address->getLinks() as $link)
176 'ADDRESS_ID' => $address->getId(),
177 'ENTITY_ID' => $link->getAddressLinkEntityId(),
178 'ENTITY_TYPE' => $link->getAddressLinkEntityType(),
182 $sqls =
$connection->getSqlHelper()->prepareMergeMultiple(
183 $this->linkTableClass::getTableName(),
191 foreach ($sqls as $sql)
197 public function delete(
int $addressId)
204 $result = $this->tableClass::delete($addressId);
205 $this->fieldTableClass::deleteByAddressId($addressId);
206 $this->linkTableClass::deleteByAddressId($addressId);