Перейти к основному содержанию

Игнорирование первичного ключа

Команда doctrine:mapping:import объявлена устаревшей, но замены ей нет.

Первичный ключ при работе с doctirne orm является обязательным, просто так пропустить его не получится.

Один из способов - это прописать список таблиц в yml для сканирования, исключив таблицы, где нет primary key

Второй способ, сложно назвать рекомендуемым, но из-за отсутствия официальной поддержки  метода, приходится модифицировать "системные" файлы

# файл
vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\Driver\DatabaseDriver.php
найти функцию
reverseEngineerMappingFromDatabase

Закомментировать, как указано ниже

//if ( ! $table->hasPrimaryKey()) {
//  throw new MappingException(
//    "Table " . $table->getName() . " has no primary key. Doctrine does not ".
//    "support reverse engineering from tables that don't have a primary key."
    //);
//}
//$pkColumns = $table->getPrimaryKey()->getColumns();
//sort($pkColumns);

добавить

$pkColumns = array(); // после sort($pkColumns);

Затем найти метод

getTablePrimaryKeys, закомментируйте все внутри и верните пустой массив.

3 способ

вместо комментирования заставить функцию переходить далее

if ( ! $table->hasPrimaryKey()) {
         continue;
}