Buenas noches, tengo un problema y no sé como solucionarlo.
En mi base de datos almaceno en un campo la fecha de nacimiento de una persona, logré calcular la edad para todas las vistas incluyendo en el admin, pero ahora, quiero hacer una búsqueda en el admin y que no sea por la fecha de nacimiento si no por la edad.
Leo sus comentarios y muchas gracias.
PD: Soy nuevo en Yii.
Dejo aquí como hacer la edad en las vistas.
Habitante.php
public function attributeLabels()
{
return array(
'edad' => 'Edad',
);
}
admin.php
<?php $this->widget(‘zii.widgets.grid.CGridView’, array(
'id'=>'habitante-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array(
'header' => 'Edad',
'name' => 'fechaNacimiento',
'value' => 'calculaEdad($data->fechaNacimiento)',
),
array(
'class'=>'CButtonColumn',
),
),
));
function calculaEdad($fecha)
{
$datetime1 = new DateTime($fecha);
$datetime2 = new DateTime();
$diff = $datetime1->diff($datetime2);
return $edad = $diff->y;
}
_view.php
$datetime1 = new DateTime($data->fechaNacimiento);
$datetime2 = new DateTime();
$diff = $datetime1->diff($datetime2);
$edad = $diff->y;
<b><?php echo CHtml::encode($data->getAttributeLabel(‘edad’)); ?>:</b>
<?php echo CHtml::encode($edad); ?>
<br />
view.php
$datetime1 = new DateTime($model->fechaNacimiento);
$datetime2 = new DateTime();
$diff = $datetime1->diff($datetime2);
$edad = $diff->y;
<?php $this->widget(‘zii.widgets.CDetailView’, array(
'data'=>$model,
'attributes'=>array(
array(
'label' => 'Edad',
'value' => $edad,
),
Y donde no sé como solucionar…
Habitante.php
$criteria=new CDbCriteria;
$criteria->compare(‘fechaNacimiento’,$this->fechaNacimiento,true);
//Aquí necesito buscar por edad y no por fecha, quisiera no agregar el campo de edad en la base de datos.