【问题标题】:What is the most correct way to define source table in \Phalcon\Mvc\Model?在 \Phalcon\Mvc\Model 中定义源表的最正确方法是什么?
【发布时间】:2012-12-26 15:59:52
【问题描述】:

据我所知,可以通过以下变体来定义表名:

1) 通过定义方法getSource()

class Table1 extends \Phalcon\Mvc\Model 
{
    public function getSource()
    {
        return 'table1';
    }
}

2) 通过定义 $_source 属性

protected $_source = 'table1';

3) 哪里需要定义源表?在 initialize() 方法或 __construct() 中,为什么?

4) 或许您还有其他可能的解决方案?

【问题讨论】:

    标签: model phalcon


    【解决方案1】:

    最好的方法是在你的类中定义getSource方法

    public function getSource()
    {
        return 'table1';
    }
    

    但是您也可以在initialize() 中使用setSource(),或者在initialize() 函数中再次设置$_source

    public function initialize()
    {
        $this->setSource('table1');
    }
    

    initialize() 执行所有必要的工作,将模型绑定到数据库并执行其他操作,以便向开发人员公开功能。 __construct() 在创建对象时被调用,正如人们所期望的那样。

    我认为,只要设置正确,$_source 的设置位置不会有很大的不同。我个人的偏好是设置在getSource()。这样可以保持整洁,我不必跟踪 $_source 变量。

    【讨论】:

    • 更多的是编码风格。我最后把 setSource($table) 方法留在了 initialize() 中,而不是定义额外的方法。在我看来,设置 $_source 变量不是很好的解决方案,因为没有记录这个属性:)
    • 在 initialize() 方法中描述表名更好,因为所有模型定义都在一个地方,它使代码更清晰:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多