Skip to content

[Bug] Aggregation will constantly show up in new Doctrine Migrations #361

@keichinger

Description

@keichinger
  • Symfony version: 5.3
  • Algolia Search Bundle version: 5.1.0
  • Algolia Client Version: 3.0.2
  • Language Version: PHP 7.4

Description

I could reproduce this issue in multiple projects now.

Creating a new Aggregation strictly following the tutorial at https://www.algolia.com/doc/framework-integration/symfony/advanced-use-cases/multiple-models-in-one-index/?client=php will work like a charm.

However, the only thing now is that when you're using doctrine/migrations v3.1.4 (and possibly older versions too - I couldn't test that yet) will cause that when you run php bin/console doctrine:migrations:diff -n that it'll create a new migration with the same SQL every single time.

The SQL in question is

        $this->addSql('ALTER TABLE aggregation_table_name CHANGE object_id object_id VARCHAR(255) NOT NULL');

While my Aggregation looks like this:

/**
 * @ORM\Entity()
 */
class EntityAEntityBAggregation extends Aggregator implements AlgoliaIndexedEntity
{
    public function getEntity () : AdvisorEntry
    {
        /** @var EntityA|EntityB $entity */
        $entity = $this->entity;

        return $entity;
    }


    /**
     * @inheritdoc
     */
    public static function getEntities () : array
    {
        return [
            EntityA::class,
            EntityB::class,
        ];
    }


    /**
     * @inheritdoc
     */
    public function getId () : ?int
    {
        /** @var AlgoliaIndexedEntity $entity */
        $entity = $this->entity;

        return $entity->getId();
    }


    /**
     * @inheritdoc
     */
    public function isIndexed () : bool
    {
        /** @var AlgoliaIndexedEntity $entity */
        $entity = $this->entity;

        return $entity->isIndexed();
    }
}

Steps To Reproduce

  • Create a new aggregation using the tutorial at https://www.algolia.com/doc/framework-integration/symfony/advanced-use-cases/multiple-models-in-one-index/?client=php
  • Install doctrine/migrations using composer require doctrine/migrations
  • Create your first migration using php bin/console doctrine:migrations:diff -n
  • Execute your first migration using php bin/console doctrine:migrations:migrate -n
  • Try re-creating a migration without making any changes to your entities using php bin/console doctrine:migrations:diff -n
  • Find your new migration with an update only to your aggregation's id field, which applies exactly the same changes as in your previous migration.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions