propel Cannot redeclare - Ошибка. Решение (в том числе через refPhpName)

Ситуация

Путь у нас есть 3 таблицы. Причина

Cannot redeclare

может быть в том, что на данную таблицу (в которой) помимо 1 кроссовой ссылается ещё и другая таблица (№2).

При этом phpName одного внешнего ключа (foreign key) совпадает с phpName таблицы №2 (см. тут поле phpName="CarArrivalTiming")

Если у этих сущностей одинаковый атрибут phpNamе, то в классе 1-ой таблицы будет создано (после propel model:build) 2 поля с одинаковыми именами, что и приводит к ошибке.

следует изменить имя внешнего ключа, скажем на

phpName="CrossCarArrivalTiming"

Решение с помощью refPhpName

В таблицу №2 (которая не кроссовая) для ключа, который ссылается на "проблемную таблицу" (у нас проблемная - это car_arrival_timing_groups) добавляем атрибут refPhpName с имеем отличным от имени phpNamе для внешнего ключа кроссовой таблицы, то есть
изменим (в таблице №2, некроссовой):

<table name="car_arrival_timings" namespace="Logistics" phpName="CarArrivalTiming">
     ................
        <foreign-key foreignTable="car_arrival_timing_groups" 
               phpName="CarArrivalTimingGroup"  
         onDelete="CASCADE">
.........

на, скажем:

<table name="car_arrival_timings" namespace="Logistics" phpName="CarArrivalTiming">
     ................
        <foreign-key foreignTable="car_arrival_timing_groups" 
              phpName="CarArrivalTimingGroup" 
              refPhpName="CarArrivalTimingGroupCarArrivalTiming" 
        onDelete="CASCADE">
.........

на базе материала:
stackoverflow.com/questions/12277239/whats-the-most-correct-way-around-this-propel-cannot-redeclare-function-error

Решение без refPhpName (не рекомендуется)

Просто измените имя внешнего ключа кроссовой таблицы на любое отличное от phpName таблицы №2
например:

phpName="CarArrivalTiming"

на:

phpName="CrossCarArrivalTiming"