每个用户自动增量

时间:2014-04-07 07:48:01

标签: php mysql sql cakephp cakephp-2.4

我有一张带发票的桌子。每张发票都属于一个用户。

因此,表格包含iduser_id列。

我想要第三列,例如invoice_id,它是基于用户的自动增量。

例如,用户1 的发票将包含id 1,2,3,4,5,6,7,8...用户2 也会包含id 1,2,3,4,5,6,7,8...的发票

我知道我可以创建一个函数来检查特定用户的最后一个值并分配下一个值但是没有其他的更容易"使用cakephpmysql更合适的方法吗?

2 个答案:

答案 0 :(得分:0)

您必须在beforeSave模型

Invoice回调中执行此操作

类似的东西:

public function beforeSave($options = array())
{

    if(!$this->id)
    {
        $user_id = $this->data['Invoice']['user_id'];
        $invoice = $this->find(
            'first', 
            array
            (
                'fields' => array('MAX(invoice_id) AS invoice_id'),
                'conditions' => array('Invoice.user_id' => $user_id )
            )
        );
        $invoice_id = $invoice [0]['invoice_id'] + 1 ;


        $this->data['Invoice']['invoice_id'] = $invoice_id ;
    }
    return true;
}

以上代码应该有效。无论如何,我不确定这是实现这一目标的最佳方式,因此请继续寻找其他解决方案。

答案 1 :(得分:-1)

在您的架构中添加

$t->addColumn('id', [
    'type' => 'integer',
    'autoIncrement' => true,
])