コード例 #1
0
ファイル: Nested.php プロジェクト: snowfire/database
 public function create(array $fields, $foreign_models = array())
 {
     if (isset($fields['next_to_node'])) {
         $transaction = true;
         $fields['left'] = $fields['next_to_node']['right'] + 1;
         $fields['right'] = $fields['left'] + 1;
         $this->_transaction_begin();
         $this->_query_update()->set('`left` = `left` + 2')->where('`left` >', $fields['next_to_node']['left'])->execute();
         $this->_query_update()->set('`right` = `right` + 2')->where('`right` >', $fields['next_to_node']['right'])->execute();
     } else {
         if (isset($fields['inside_node'])) {
             $transaction = true;
             $fields['left'] = $fields['inside_node']['left'] + 1;
             $fields['right'] = $fields['left'] + 1;
             $this->_transaction_begin();
             $this->_query_update()->set('`left` = `left` + 2')->where('`left` >', $fields['inside_node']['left'])->execute();
             $this->_query_update()->set('`right` = `right` + 2')->where('`right` >', $fields['inside_node']['left'])->execute();
         } else {
             if (!isset($fields['left'], $fields['right'])) {
                 $transaction = true;
                 $this->_transaction_begin();
                 $last_right = $this->_query_select('MAX(`right`) AS max_right')->limit(1)->execute(array('single_column' => true));
                 $fields['left'] = $last_right + 1;
                 $fields['right'] = $last_right + 2;
             }
         }
     }
     unset($fields['next_to_node'], $fields['inside_node']);
     parent::create($fields, $foreign_models);
     if ($transaction) {
         $this->_transaction_end();
     }
 }
コード例 #2
0
ファイル: Model.php プロジェクト: snowfire/database
 private function _create_one_to_one($fields, self $foreign_model, $foreign)
 {
     $foreign_singular = isset($foreign['singular']) ? $foreign['singular'] : $foreign_model->singular();
     if (isset($fields[$foreign_singular])) {
         //throw new \InvalidArgumentException("Missing \"{$foreign_singular}\" data");
         $foreign_id = $foreign_model->create($fields[$foreign_singular]);
         unset($fields[$foreign_singular]);
         $fields["{$foreign_singular}_id"] = $foreign_id;
     }
     return $fields;
 }