是他们的方式,我们可以在实体中添加mysql自定义函数
protected $_virtual = ['check_tenant' => '(check_tenant(Tenants.id))'];
我想用以下查询 find()
方法
//SELECT id, first_name, check_tenant(Tenants.id) FROM tenants AS Tenants
$this->Tenants->find()->all();
如果我可以在虚拟字段中定义自定义mysql函数,那么它将自动返回到结果集中
我能通过这个新领域的考试 select()
方法
$this->Tenants->find()
->select(['id', 'check_tenant' => '(check_tenant(Tenants.id))'])->all();
但是我想全局定义,所以新字段不需要每次都传入 find
呼叫
1条答案
按热度按时间mklgxw1f1#
cakephp3.x中的虚拟属性与cakephp2.x中的虚拟字段不同,后者用于sql查询,前者用于php级别,通常数据已经存在于实体中。
如果希望自定义字段出现在所有查询中,那么可以使用
Model.beforeFind()
事件相应地修改查询:另一个侵入性较小的选项是定制查找器,您可以在需要它们的地方显式使用它们:
另请参见
食谱>数据库访问和orm>表对象>生命周期回调>beforefind
食谱>数据库访问和orm>实体>创建虚拟属性
食谱>数据库访问和orm>检索数据和结果集>使用查找器加载数据
食谱>数据库访问和orm>检索数据和结果集>自定义查找器方法
食谱>数据库访问和orm>查询生成器>使用sql函数