2017-09-25 2 views
1

J'ai une table appelée persons qui ont trois colonnes appelées id, name et birth.Yii2: Comment utiliser la fonction de PostgreSQL?

Je peux obtenir name et birth mais je dois calculer l'âge de la personne utilisant sa date birth. Je veux utiliser la fonction de PostgreSQL: age(timestamp). Mais je ne sais pas l'utiliser.

Est-il possible d'utiliser une fonction de PostgreSQL?

je tentais de l'utiliser dans la vue, mais je me rends compte qu'il ne fonctionnera pas:

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

Dois-je changer le modèle? Je ne sais pas où utiliser la fonction age.

Répondre

3

Dans votre modèle, vous devez définir la propriété publique public $age;. Ensuite, votre instruction select devrait ressembler à ceci:

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

Ensuite, vous pouvez y accéder en tant que propriété:

$person->age;