예제 #1
0
 public static function seed_initial_data()
 {
     if (static::has_been_seeded()) {
         return;
     }
     foreach (self::$initial_data as $model => $objects) {
         foreach ($objects as $data_set) {
             if (isset($data_set['password'])) {
                 $data_set['password'] = hash_passwd($data_set['password']);
             }
             $obj = null;
             if (isset($data_set['id'])) {
                 $obj = $model::find($data_set['id']);
             }
             if ($obj) {
                 $obj->update_attrs($data_set);
             } else {
                 $obj = new $model($data_set);
                 $obj->is_new_object = true;
             }
             $obj->save();
             foreach ($data_set as $attr => $val) {
                 if (is_array($val) && $model::has_attr($attr) && $model::is_rel($attr)) {
                     if ($model::get_attr_type($attr) == 'has-many') {
                         $def = $model::get_attr($attr);
                         if (any($def['is_bilinear']) && any($def['is_master'])) {
                             unset($obj->{$attr});
                             $obj->assign_rel($attr, $val);
                         }
                     }
                 }
             }
         }
     }
     \System\Database\Migration::create(array('seoname' => 'initial-seed', 'name' => 'Initial data seed', 'desc' => 'Initial data seed', 'status' => 'ok', 'date' => new \DateTime()));
 }