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'
]);

有人有什么想法吗?

看第三个例子是的,这正是我现在正在做的。编辑了问题“你为什么不成立工会?”?