与不同外键

时间:2015-12-22 12:56:53

标签: orm cakephp-3.0

我正在实施一个允许在用户之间记录交易的简单系统。为此,我有两个表transactionsusers

每个交易都在两个用户之间,并在from_user_idto_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]: Column not found: 1054 Unknown column 'Transactions.Array' in 'where clause')并将foreignKey设置为false,并且queryBuilder关联不允许使用自定义hasMany

对两个外键使用两个不同的关联(一个用于否定,一个用于事务)然后合并两个,但是我不愿意走这条路。这是目前的做法:

$this->hasMany('NegativeTransactions', [
    'className' => 'Transactions',
    'foreignKey' => 'from_user_id'
]);
$this->hasMany('PositiveTransactions', [
    'className' => 'Transactions',
    'foreignKey' => 'to_user_id'
]);

有任何想法吗?

0 个答案:

没有答案