Orm 多个hasMany()与不同的外键关联
我正在实现一个简单的系统,允许记录用户之间的交易。为此,我有两个表Orm 多个hasMany()与不同的外键关联,orm,cakephp-3.0,Orm,Cakephp 3.0,我正在实现一个简单的系统,允许记录用户之间的交易。为此,我有两个表transactions和users 每个事务都在两个用户之间进行,并在from_user_id和to_user_id字段中记录从一个用户到另一个用户的流程,这两个字段是users.id的外键 现在,我想获取一个用户的所有事务(按逆时间顺序)。我想要这样的东西: class UsersTable extends Table { public function initialize(array $config) {
transactions
和users
每个事务都在两个用户之间进行,并在from_user_id
和to_user_id
字段中记录从一个用户到另一个用户的流程,这两个字段是users.id
的外键
现在,我想获取一个用户的所有事务(按逆时间顺序)。我想要这样的东西:
class UsersTable extends Table {
public function initialize(array $config) {
...
$this->hasMany('Transactions', [
'foreignKey' => [
'OR' => [
'Users.id = Transactions.from_user_id',
'Users.id = Transactions.to_user_id'
]
],
'finder' => [
...
]
]);
...
}
}
当然,这是行不通的(SQLSTATE[42S22]:找不到列:1054未知列“Transactions.Array”位于“where子句”
)中,将foreignKey
设置为false
并使用自定义queryBuilder
对于有许多关联是不允许的
有效的方法是对两个外键使用两个不同的关联(一个用于负数事务,一个用于正数事务),然后将两者合并,但我不想这样做。这是目前的做法:
$this->hasMany('NegativeTransactions', [
'className' => 'Transactions',
'foreignKey' => 'from_user_id'
]);
$this->hasMany('PositiveTransactions', [
'className' => 'Transactions',
'foreignKey' => 'to_user_id'
]);
有人有什么想法吗?看第三个例子是的,这正是我现在正在做的。编辑了问题“你为什么不成立工会?”?