0

我想在 ActiveRecord 中使用复合键。我有两张桌子。

报价和评论。报价包含 pk - id;评论 pk 是复合模块cid

module - 模块名称,评论来自哪里。

section - 此模块的部分

cid - 标识符,在这种情况下,这是报价的 id。

在评论中,我像这样定义了主键。

public function primaryKey()
{
    return array('module', 'section', 'cid');
}

下一个,我想获取那些记录,与报价相关的内容。因此,在 Quotes 我声明了关系:

'comments' => array(self::HAS_MANY, 'Comment', 'module, section, cid', 'params' => array(
                ':ypl0' => '"quotes"',
                ':ypl1' => '"quote"',
                ':ypl2' => 'id'
            )),

所需的结果是:

SELECT * FROM quotes q

LEFT JOIN comments c ON (c.cid = q.id AND module = "quotes" AND section = "quote")

WHERE c.id IS NULL

SQL 正在工作,关系 - 不是。我做错了什么?

4

1 回答 1

1

尝试以下未经测试的代码

'comments' => array(self::HAS_MANY, 'Comment', 'cid','condition'=>'module=:param1 AND section=:param2','params' => array(':param1' => 'quotes',':param2' => 'quote',)),
于 2012-09-06T07:39:59.267 回答