关于 defaultScope

现有ModelA BELONGSTO ModelB

其主键名均为id

ModelB出于特殊原因需要过滤id<>1,所以我在defaultScope里写上




return array(

    'condition'=>"id<>1",

);



现在的问题是,如果读取ModelA时,直接with(ModelB),会出现

Column ‘id’ in on clause is ambiguous 错误。

那我在这个defaultScope条件里到底是写t.id<>1还是写ModelB.id<>1合适呢?

你要过滤谁的id 就写谁。

sharehua你这个答案太那个啦,我要知道我就不提问了^_^ 请你帮帮忙,谢谢。

ModelA 里肯定也是有id做为主键的

根据我的提问,请问ModelB的defaultScope该怎么写。

谢谢 sharehua 的帮助,问题已经解决

主要是alias引起的

解决如下,在defaultScope里




$alias = $this->getTableAlias(false,false);

return array(

    'condition'=>"{$alias}.id<>1",

);



看来defaultScope里都应该这么写,不然关联时,总会出现这样或那样的问题