0

在我的系统中,我有一个会员详细信息部分。我希望能够显示每个会员的会员到期状态(例如,当前、到期和已过期)。我已经为每个人设置了有效期。我只是需要一种方法让系统检查到期日期并显示会员状态,我不知道该怎么做。

如果有人可以发布有关如何执行此操作的详细说明,那就太好了。

会员型号:

<?php
App::uses('AppModel', 'Model');
class Member extends AppModel {
    public $displayField = 'id';

    public $belongsTo = array(
        'Contact' => array(
            'className' => 'Contact',
            'foreignKey' => 'contact_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );
}

会员表有:
id
member_type
year_joined
date_renewed card_issue_date
续订
_due
contact_id

会员资格按年计算。并且功能与任何俱乐部会员资格一样。我需要索引页面和查看页面通过检查会员到期日期“renewal_due”来显示每个会员的状态。对于仍然有效/未过期的会员资格,会员状态应显示“当前”,对于将在一个月内到期的会员资格显示“即将到期”,对于已过期的会员,应显示“已过期”。

如果您需要任何进一步的信息,请随时询问。我不确定这需要什么样的信息才能工作。

4

1 回答 1

0

如果您在数据库中将续订日期保存为 unix 时间戳(以秒为单位),您可以使用将当前时间与续订日期进行比较time()

你的控制器:

<?php

public function index($memberid) {
    $this->set('member', $this->Member->find('first', array('conditions' => array('Member.id' => $memberid)));
}

?>

在您看来:

<?php
    if($member['Member']['renewal_date'] <= time()) {
        $status = 'Expired';
    } elseif (($member['Member']['renewal_date'] - (30 * 24 * 60 * 60)) <=  time()) {
        $status = 'Due To Expire';
    }  else {
        $status = 'Current';
    }
?>

Your membership is: <?php echo $status; ?>

您需要更改您的数据库,使更新日期字段为整数,然后将更新日期保存为 unix 时间戳格式,如下所示:

<?php
    //sets a date one year from now
    $one_year_ahead = time() + (365 * 24 * 60 * 60);
    //alternative method
    $one_year_ahead = strtotime('+1 year');
?>
于 2012-08-01T13:07:39.500 回答