Kohana 3.2 中使用 ORM 模型(结果)的字段的自定义过滤器

Posted

技术标签:

【中文标题】Kohana 3.2 中使用 ORM 模型(结果)的字段的自定义过滤器【英文标题】:Custom filter for a field using ORM Model (result) in Kohana 3.2 【发布时间】:2012-08-31 06:43:05 【问题描述】:

我想知道是否有办法从 ORM 中过滤结果。我希望为我的模型创建一个自定义方法,例如,用于过滤来自我的数据库的输出。目前,只能从表单中过滤 POST 中的数据以将它们保存到数据库中,但是,我想要相反。

如果我的表中有一个名为“标识”的字段,其值为“8-985-256”,我希望该值为“08-0985-00256”(不用担心如何添加额外的零,那部分很简单)。

假设我的模型上有一个名为“format_identification”的自定义方法。 然后,我使用 ORM 类获取数据,如下所示:

$user = ORM::factory('user', 1);

我想回显标识,但是格式正确:

echo $user->format_identification();

这应该打印“08-0985-00256”。如果我使用字段的名称,那可以,但是,值的格式不是。

我希望你明白我想要做什么。

感谢您的宝贵时间。

【问题讨论】:

【参考方案1】:

将公共方法添加到名为format_identificationModel_User 文件中,例如:

<?php defined('SYSPATH') or die('No direct access allowed.');

class Model_User extends ORM 

    public function format_identification() 

        $identification_value = $this->identification;

        // Add the extra zeros to value

        return $identification_value;

    


【讨论】:

【参考方案2】:

我认为有更好的方法来解决您的问题:

class Model_User extends ORM 

    public function __get($column) 
        if($column=='identification')
         // Do your stuff
        
        return parent::__get($column);
    


【讨论】:

以上是关于Kohana 3.2 中使用 ORM 模型(结果)的字段的自定义过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Kohana 3.2 ORM 验证和表单验证

Kohana 3.2 - ORM 的 pk() 方法在 save() (create()) 之后返回 false - 为啥?

Kohana ORM,在模型中定义字段

Kohana 3 ORM 模型中的 ORWHERE 等价物

模型中的 Kohana ORM 多重关系

Kohana ORM 的订单结果