link-multiple save relate option, ref

This commit is contained in:
Yuri Kuznetsov
2024-10-17 15:06:46 +03:00
parent 012dfc85ed
commit bc2bb3d4a2
3 changed files with 12 additions and 4 deletions

View File

@@ -366,7 +366,8 @@ class LdapLogin implements Login
$data[$fieldName] = $fieldValue;
}
$user = $this->entityManager->getNewEntity('User');
/** @var User $user */
$user = $this->entityManager->getNewEntity(User::ENTITY_TYPE);
$user->set($data);

View File

@@ -30,7 +30,6 @@
namespace Espo\Core\FieldProcessing\Relation;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\ORM\Entity;
use Espo\Core\FieldProcessing\Saver\Params;
use Espo\Core\ORM\EntityManager;
@@ -42,17 +41,18 @@ use Espo\Core\ORM\Repository\Option\SaveOption;
*/
class LinkMultipleSaver
{
private const RELATE_OPTION = 'linkMultiple';
public function __construct(private EntityManager $entityManager)
{}
public function process(Entity $entity, string $name, Params $params): void
public function process(CoreEntity $entity, string $name, Params $params): void
{
$idListAttribute = $name . 'Ids';
$columnsAttribute = $name . 'Columns';
if (
!$entity->isNew() &&
$entity instanceof CoreEntity &&
!$entity->hasLinkMultipleField($name)
) {
$entity->clear($idListAttribute);
@@ -216,12 +216,14 @@ class LinkMultipleSaver
$repository->getRelation($entity, $name)->relateById($id, $data, [
SaveOption::SKIP_HOOKS => $skipHooks,
self::RELATE_OPTION => $entity->hasLinkMultipleField($name),
]);
}
foreach ($toRemoveIdList as $id) {
$repository->getRelation($entity, $name)->unrelateById($id, [
SaveOption::SKIP_HOOKS => $skipHooks,
self::RELATE_OPTION => $entity->hasLinkMultipleField($name),
]);
}

View File

@@ -30,6 +30,7 @@
namespace Espo\Core\FieldProcessing\Relation;
use Espo\Core\ORM\Defs\AttributeParam;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\ORM\Entity;
use Espo\Core\FieldProcessing\Saver as SaverInterface;
@@ -85,6 +86,10 @@ class Saver implements SaverInterface
return;
}
if (!$entity instanceof CoreEntity) {
return;
}
$this->linkMultipleSaver->process($entity, $name, $params);
}