CakePHP 2.x:在关联模型上调用虚拟字段

时间:2014-12-22 17:50:39

标签: cakephp cakephp-2.3 model-associations

我有模型ExternalShare,其中 hasOne SfileVersion。还有第三个模型Sfile hasMany SfileVersion

SfileVersion 中我在$ virtualFields中有以下代码:

class SfileVersion extends AppModel {    
    public $virtualFields = array(
            'active' => 'SfileVersion.is_active',
            'externalShare' => 'ExternalShare.id'
    );
    [...]
}

AppModel看起来像以下代码,因此, Containable 随处可用:

class AppModel extends Model {
    public $recursive = -1;
    public $actsAs = array('Containable');
}

现在,我尝试在find('all')中调用SfileController方法,以便从SfileSfileVersion获取数据:

class SfilesController extends AppController {    
    public function index() {
        $this->Sfile->recursive = 0;
        $this->Sfile->contain('SfileVersion');
        $allSfiles = $this->Sfile->find('all');
    }
    [...]
}

现在我得到了以下错误:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ExternalShare.id' in 'field list'

在CookBook(http://book.cakephp.org/2.0/en/models/virtual-fields.html#limitations-of-virtualfields)中,这是

  

此实施问题的常见解决方法是复制   在需要时,virtualFields在运行时从一个模型到另一个模型   访问他们

,我尝试过,在find('all')前面添加以下几行:

$this->Sfile->virtualFields['externalShare'] = $this->Sfile->SfileVersion->virtualFields['externalShare'];

但我仍然遇到同样的错误。我没有直接了解,解决方法正在做什么。此外,我的虚拟字段可能不是问题(活动似乎工作),只是特殊的,指向其他(第三)模型关联(ExternalShare.id)。有人有想法或解决方案吗?非常感谢你!

0 个答案:

没有答案