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(); }