Mysql Id
#1
Posted 21 December 2012 - 01:02 PM
Estou a finalizar a estrutura da minha aplicação e há algo que me está a dificultar.
Queria no id do recibo que aparece-se da seguinte forma.
ANOID. EX 201201
Qual seria a melhor forma de o fazer?
Cumprimentos
#2
Posted 22 December 2012 - 06:02 AM
Nesse recibo, voce pode concatenar o ano atual com o campo ID.

https://github.com/gugoan
#3
Posted 22 December 2012 - 09:26 AM
Devo criar uma função no controlador?
Se sim como deveria ser a função?
#4
Posted 22 December 2012 - 12:27 PM
$id_recido = date('Y') . $model->primaryKey;
Eu recomendo adicionar essa criação concatenação no seu Model, depois de salvar o Recibo.
Exemplo:
class Recibo extends CActiveRecord { [...] public function beforeSave() { if ($this->isNewRecord) { $this->id_recibo = date('Y') . $this->primaryKey; } return parent::beforeSave(); } [...] }
Desta forma, quando um cliente ou você mesmo adicionar um novo recibo ele vai pegar o ID cadastrado, e concatena com o ano corrente e adicionar a sua tupla.
This post has been edited by Newerton: 16 January 2013 - 09:41 AM
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de

#5
Posted 22 December 2012 - 03:09 PM
Cumprimentos e muito obrigado
#6
Posted 03 January 2013 - 07:46 AM
Newerton, on 22 December 2012 - 12:27 PM, said:
$
id_recido = date('Y') . $model->primaryKey;
Eu recomendo adicionar essa criação concatenação no seu Model, depois de salvar o Recibo.
Exemplo:
class Recibo extends CActiveRecord { [...] public function beforeSave() { if ($this->isNewRecord) { $this->id_recibo = date('Y') . $this->primaryKey; } return parent::beforeSave(); } [...] }
Desta forma, quando um cliente ou você mesmo adicionar um novo recibo ele vai pegar o ID cadastrado, e concatena com o ano corrente e adicionar a sua tupla.
#7
Posted 15 January 2013 - 10:08 AM
alguma ideia para resolver?
Cumprimentos
#8
Posted 16 January 2013 - 06:03 AM
obscuremind, on 15 January 2013 - 10:08 AM, said:
alguma ideia para resolver?
Cumprimentos
Utiliza os mesmos critério, porém na seguinte função
public function afterSave() { if ($this->isNewRecord) { $this->id_recibo = date('Y') . $this->primaryKey; } return true(); }
A fé em Deus nos faz crer no incrível,
ver o invisível e realizar o impossível.
#9
Posted 16 January 2013 - 07:06 AM
#10
Posted 16 January 2013 - 09:42 AM
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de

#12
Posted 16 January 2013 - 12:55 PM
obscuremind, on 16 January 2013 - 10:00 AM, said:
Cumprimentos
Então faz assim
public function beforeSave() { if ($this->isNewRecord) { $this->id_recibo = date('Y') . '' . $this->id_recibo; } return parent::beforeSave(); }
A fé em Deus nos faz crer no incrível,
ver o invisível e realizar o impossível.
#13
Posted 16 January 2013 - 01:15 PM
Já tentei inclusive usar o mysql_insert_id para ir buscar o ultimo id, e incrementar 1 mas nem assim funcionou.
Cumprimentos
#14
Posted 16 January 2013 - 02:13 PM
obscuremind, on 16 January 2013 - 01:15 PM, said:
Já tentei inclusive usar o mysql_insert_id para ir buscar o ultimo id, e incrementar 1 mas nem assim funcionou.
Cumprimentos
Tentou assim também?

public function afterSave() { if ($this->isNewRecord) { $this->id_recibo = date('Y') . '' . $this->id_recibo; } return true(); }
A fé em Deus nos faz crer no incrível,
ver o invisível e realizar o impossível.
#16
Posted 16 January 2013 - 02:56 PM
obscuremind, on 16 January 2013 - 02:44 PM, said:
O que me parece o seu id_recibo é um auto_increment então a melhor forma é você criar outro campo e fazer a concatenação do ID com o ano, como o Gustavo Andrade falou acima. Tenta assim
public function beforeSave() { if ($this->isNewRecord) { $this->numero = date('Y') . ''.$this->id_recibo; } return parent::beforeSave(); }
A fé em Deus nos faz crer no incrível,
ver o invisível e realizar o impossível.
#17
Posted 16 January 2013 - 03:21 PM
#18
Posted 16 January 2013 - 07:58 PM
Veja se consegue visualizar o ID adicionado.
public function beforeSave() { if ($this->isNewRecord) { echo '<pre>'; print_r($this->attributes); echo '</pre>'; exit(); } return parent::beforeSave(); }
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de

#19
Posted 17 January 2013 - 04:40 PM
Gerei os forms no gii extended.
Array
(
[nome_cliente] => teste
[telefone_cliente] => 34343
[morada_cliente] => asdasdas
[marca_equipamento] => blaaa
[nr_serie] => 2132313131
[avaria] => asdasdas
[data_recb] => 2013-01-26
[data_entrega] => 2013-01-17
[garantia] => Sim
[preco] => 1231
[observacoes] => asdasda
[modelo_equipamento] => blaaa
[estado] => Recebido
[id_recibo] =>
[id_ficha] =>
)
#20
Posted 17 January 2013 - 07:53 PM
function rules() {...array('id_recibo', 'safe')...}.
This post has been edited by Newerton: 17 January 2013 - 07:53 PM
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de
