【问题标题】:Give an alias to field name on ::find('all')在 ::find('all') 上为字段名称提供别名
【发布时间】:2015-08-16 21:23:30
【问题描述】:

我在数据库中有一个名为 name 的字段,但当我检索到该字段时,我会将该字段称为 label

在原始的SQL 中,我可以这样做:

  SELECT name AS label FROM ...

find 上有一种“快速方法”可以做到这一点,而无需处理entityvirtual fields 等...

【问题讨论】:

  • 所以您的问题不是关于 SQL 列别名和 CakePHP ORM?
  • 是的,但我问的是如何在 cakephp 上做到这一点,所以我不认为 SQL 专家可以提供帮助。我错了吗?
  • 好吧,AFAICT,标签并不是那个独有的,仅仅因为一个问题不需要SQL专家,这并不意味着使用SQL标签就可以不合适的,至少在与其他标签组合形成更具体的“复合类别”时不会,否则我们最终会需要像cakephp-orm-sql-aliases这样的丑陋标签;)标签也使搜索更容易,它们也是生成相关链接的一个因素(右侧的链接列表)。
  • 无论如何,为什么不能选择虚拟属性?在查询级别执行此操作有其缺点。
  • 你能给我举个例子,我可以如何使用虚拟属性来做到这一点吗?

标签: sql cakephp orm cakephp-3.0


【解决方案1】:

我在Entity 上使用了这样的虚拟属性

protected $_virtual = ['label'];

protected function _getlabel()
{
    return $this->_properties['name'];
}

一个潜在的问题可能是...我正在使用 _serialize 返回结果,但它不起作用,因为您必须使用 $_virtual 公开 虚拟属性。 p>

【讨论】:

    猜你喜欢
    • 2021-06-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多