Два пользователя, связанные с одной транзакцией в CakePHP 3.x - PullRequest
0 голосов
/ 24 июня 2019

В моем приложении есть таблица транзакций с: Идентификатор продавца, идентификатор покупателя и идентификатор актива.

seller_id и customer_id - это идентификаторы, указывающие на таблицу Users. Чтобы придерживаться соглашения и сохранять автоматические ассоциации, оба должны называться «user_id» (что, конечно, невозможно)

Как правильно создать такие ассоциации в CakePHP 3.x?

Я предполагаю, что я должен создать специальные таблицы ассоциаций: Продавцы (id, user_id) Покупатели (id, user_id)

и тогда ассоциации будут через эти таблицы: Транзакция => Продавцы, Покупатели => Пользователи

Это правильно? Будет ли это работать? Есть ли лучший способ?

1 Ответ

2 голосов
/ 25 июня 2019

Вы можете определить отношения с различными псевдонимами и внешними ключами, как показано ниже.

В вашей модели транзакций / Таблица.

$this->belongsTo('Sellers' , [ 
    'foreignKey' => 'seller_id',  
    'className' => 'Users'   
]); 

$this->belongsTo('Buyers' , [ 
    'foreignKey' => 'buyer_id',  
    'className' => 'Users'   
]);  

Если вы также хотите определить отношение в пользовательской модели, вы можете определить это следующим образом.

В модели пользователя / таблица

$this->hasMany('BuyerTransactions' , [ 
    'foreignKey' => 'buyer_id',  
    'className' => 'Transactions'   
]); 


$this->hasMany('SellerTransactions' , [ 
        'foreignKey' => 'seller_id',  
        'className' => 'Transactions'   
    ]);
...