Yii框架 - 如何为字段获取不同的值?

时间:2014-04-09 16:47:46

标签: php yii

我有一个名为vat_free的字段的表。所以我的模型是用属性$vat_free创建的。其值可以是 0 1

我希望我的观点显示,而不是 0 1 。我可以创建一个像getVatFree()这样的getter,但它似乎是一个混乱的解决方案,因为那时我会在同一个字段中有两个属性,即使它可以用于不同的目的。

那么我怎样才能只使用原始属性$vat_free?我不能修改它的吸气剂吗?

3 个答案:

答案 0 :(得分:4)

创建方法

public function getVatFreeString(){
    return $this->vat_free ? 'Yes':'No';
}

是正确的解决方案,它并不凌乱。

答案 1 :(得分:3)

你可以这样做

$vat_free = YES or NO

但在保存此对象之前,您将使用beforeSave()方法覆盖对象类,如下所示:

beforeSave(){
   if($this->vat_free = YES){
         $this->vat_free = 1
   }else{
$this->vat_free = 0;
   }
}

并覆盖afterFind()以执行相反的操作(对于beforeSave())translate。但这甚至是凌乱的,如果你进行批量保存或检索,它将无法工作。

我看到了2个解决方案。

  1. 继续你所说的getVatFree(),这是OOP封装的全部目的。
  2. 不是在db中创建1或0,而是执行Y或N值,您可以在两个地方使用它们而不会出现问题。

答案 2 :(得分:2)

在您的模型中,创建一个仅用于显示目的的新字段。

class User extends CActiveRecord
{

  public $displayVatFreeFlag;

  public function rules() { ... }

  public function afterFind()
  {
     $this->displayVatFreeFlag = ($this->vat_free ? 'Yes':'No');
  }
}

然后,在您的字段中,正常显示该字段。

Vat free : <?php echo $model->displayVatFreeFlag; ?>