【问题标题】:Phalcon Column name PrefixesPhalcon 列名前缀
【发布时间】:2016-09-02 09:26:08
【问题描述】:

我在下面有这个用户表。

在 phalcon 中,是否可以映射列名,以便在执行所有与模型相关的进程时删除所有前缀名称?在 YII 中,这是可行的。 可以这么说,

$user->id will point to $user->tbl_user_id;
$user->fullname will point to $user->tbl_user_fullname;
$user->phone will point to $user->tbl_user_phone;

调用表名没有问题,因为在模型中您可以指定 getSource()。我尝试了在网上找到的列映射,但无法正常工作,并且不确定它是否理想。

另外,如果我要以这种方式实现它,这会导致可能的问题吗?有什么已知的缺点吗?

PHP 版本

PHP 5.4.44-0+deb7u1 (cli)(构建时间:2015 年 8 月 16 日 09:51:53)版权所有 (c) 1997-2014 PHP Group Zend Engine v2.4.0,版权所有 (c) 1998-2014 Zend 技术

【问题讨论】:

  • 为什么字段名需要前缀? (不仅仅是表格?)...我认为你可以通过列映射来实现这一点(你试试这个),但很奇怪。我会研究一下。
  • 这就是表字段名称的设计方式,这就是我想做表字段或列映射的原因。

标签: database orm mapping phalcon


【解决方案1】:

您可以将您的数据库列名称映射到您的内部 Phalcon 命名:

把它放在你的User 模型中

public function columnMap()
{
    return [
        // database column name => phalcon name
        'tbl_user_id'       => 'id',
        'tbl_user_fullname' => 'fullname',
        'tbl_user_phone'    => 'phone',
    ];
}

查看the documentation 了解有关列映射的更多信息。

ORM 支持独立的列映射,这允许开发人员在模型中使用与表中不同的列名。 Phalcon 将识别新的列名并相应地重命名它们以匹配数据库中的相应列。 [...]。

【讨论】:

  • 嗨蒂莫西,是的,我已经检查过了。抱歉,我的问题不是很清楚。我想知道的是,是否有可能我不需要在所有模型中定义它?这样如果有 tbl_user, tbl_bag, tbl_contacts 所有 3 个模型都只会读取一个映射文件?
  • 没有办法做到这一点,没有。
猜你喜欢
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 2020-11-13
  • 1970-01-01
  • 2016-03-07
相关资源
最近更新 更多