2017-09-25 102 views
1

我有一个名为persons的表,它有三列,分别叫做id,namebirthYii2:如何使用PostgreSQL的函数?

我能得到namebirth,但我需要使用它的birth日期来计算年龄的人的。我想使用PostgreSQL的功能:age(timestamp)。但我不知道用它。

有没有办法使用PostgreSQL的函数?

我试图在视图中使用它,但后来我意识到这将不起作用:

$person = \app\models\Persons::findOne(['id' => 1234]); 
$myName = $person->name; 
$myBirth = $person->birth; 
$myAge = $person->age(birth); 

我应该改变的模式?我不知道在哪里使用age函数。

回答

3

在你的模型中,你应该定义公共属性public $age;。然后,你的SELECT语句应该是这样的:

$person = Persons::find()->select(['name', 'birth', 'age(birth) as age'])->andWhere(['id' => 1234])->one(); 

然后你就可以访问它作为财产:

$person->age;