Ejemplo n.º 1
0
 public function __construct(Db $db, $data = [])
 {
     $this->_db = $db;
     $hasId = false;
     if (!empty($data)) {
         $data = $this->treatCast($data);
         $id = isAke($data, 'id', false);
         if (false !== $id) {
             $hasId = true;
             $this->_data['id'] = (int) $id;
             unset($data['id']);
         }
     } else {
         $fields = $db->store->get('schema', []);
         if (empty($fields)) {
             $first = $db->first();
             if ($first) {
                 unset($first['id'], $first['updated_at'], $first['created_at']);
                 $fields = array_keys($first);
                 foreach ($fields as $f) {
                     $data[$f] = null;
                 }
             }
         } else {
             $datas = $fields;
             $fields = array_keys($fields);
             foreach ($fields as $f) {
                 $i = isAke($datas, $f, []);
                 $default = isAke($i, 'default', null);
                 $data[$f] = $default;
             }
         }
     }
     $this->_data = array_merge($this->_data, $data);
     $this->boot();
     if (false !== $hasId) {
         $this->_related();
     }
     $this->_hooks();
     $this->_initial = $this->assoc();
 }