Skip to content

Index method not obeying columName() it tries to create the index using the field name instead #62

Open
@lsrzj

Description

@lsrzj

When trying to use this kind of construct $builder->integer('userId')->columnName('user_id')->index('user_id_token_index')->nullable(); Fluent is giving me the error that there is no column named userId on the database. Obvious, because I changed the column name and I'm not using the class's field name. So I tried a workaround that I don't know if it's the correct form to implement it, but solved the issue. Bellow the code snippets:

Field.php

/**
 * @param string|null $name
 *
 * @return Field
 */
public function index($name = null)
{
    if (!isset($this->fieldBuilder->getMapping()['columnName'])){
        $columnName = $this->getName();
    } else {
        $columnName = $this->fieldBuilder->getMapping()['columnName'];
    }
    $index = new Index(
    $this->metaDatabuilder,
      [$columnName]//$this->getName()]
    );

    if ($name !== null) {
        $index->name($name);
    }

    $this->callbackAndQueue($index);

    return $this;
}

FieldBuilder.php, added a method to get the mapping information

public function getMapping() {
    return $this->mapping;
}

Another workaround is to do like this on the mapping file:

$builder->integer('userId')->columnName('user_id');
$builder->index('user_id');

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