事实上的
属性
在CakePHP中,3.x与virtual不同
领域
在cakephp2.x中,后者用于SQL查询,前者用于PHP级别,通常用于实体中已经存在的数据。
如果希望自定义字段出现在
全部的
例如,您可以使用
Model.beforeFind()
事件相应地修改查询:
// in TenantsTable class
public function beforeFind(\Cake\Event\Event $event, \Cake\ORM\Query $query, array $options)
{
return $query
// select custom fields (functions builder usage not required, but advised)
->select(function (\Cake\ORM\Query $query) {
return ['check_tenant' => $query->func()->check_tenant([
'Tenants.id' => 'identifier'
])];
})
// ensure that the tables default fields are being selected too
->enableAutoFields(true); // autoFields() before CakePHP 3.4
}
另一个侵入性较小的选项是定制查找器,您可以在需要它们的地方显式使用它们:
// in TenantsTable class
public function findWithTenantCheck(\Cake\ORM\Query $query, array $options)
{
return $query
->select(/* ... */)
->enableAutoFields(true);
}
// query data
$query = $this->Tenants->find('withTenantCheck');
另请参见