我有一张带发票的桌子。每张发票都属于一个用户。
因此,表格包含id
,user_id
列。
我想要第三列,例如invoice_id,它是基于用户的自动增量。
例如,用户1 的发票将包含id 1,2,3,4,5,6,7,8...
而用户2 也会包含id 1,2,3,4,5,6,7,8...
的发票
我知道我可以创建一个函数来检查特定用户的最后一个值并分配下一个值但是没有其他的更容易"使用cakephp
或mysql
更合适的方法吗?
答案 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,
])