2017-09-25 8 views
1

id,nameおよびbirthという3つの列を持つpersonsというテーブルがあります。Yii2: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;