×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: PHP
Posted by: ic L…
Added: Nov 24, 2016 9:53 AM
Views: 17
Protože nemůžeme vytvořit auto_increment přímo v SQL dá se to obejít takto. Pozor musí se vždy do ID něco posílat… i když třeba jen pouhý NULL, jinak se totiž setter nespustí a jestli to má nějaké konstruktory nevím :(
  1.         /**
  2.         * @unique id
  3.         * @GeneratedValue
  4.         * @sql int(32) not null auto_increment
  5.         */
  6.         public $id = 1;
  7.         public function __set_Id($id = NULL)
  8.         {
  9.                 if ($id) {
  10.                         $this->setProperty('id', $id);
  11.                 } else {
  12.                         $editing = \Maps\Model\Map::many()->where('uuid = :uuid', array('uuid' => $this->_properties['uuid']))->count();
  13.                         if (!$editing) {
  14.                                 $autoIncrement = \Maps\Model\Map::many()->max("id");
  15.                                 $id = $autoIncrement?(int) $autoIncrement+1:$this->_properties['id'];
  16.                                 $this->setProperty('id', $id);
  17.                         }
  18.                 }
  19.         }