Исключения php-activerecord - PullRequest
       0

Исключения php-activerecord

1 голос
/ 02 ноября 2011

Кажется, я не могу найти способ отловить исключения ActiveRecord, используя метод: 2

МЕТОД: 1 Это работает, как и ожидалось, знает достаточно об объекте для записи ошибок!

$model = model::find(id);
if($model->delete()){
echo 'yay';
}else{
throw new \ActiveRecord\ActiveRecordException($model->errors())
}

// МЕТОД: 2 Нет информации для записи ошибки

if(Model::create(attributes)){
echo 'yay'
}else{
throw new \ActiveRecord\ActiveRecordException('where do I pull error from now?')
}

// мой пример из реального мира

public function create(){

    //grab the validation data from $this->validation_rules
    $this->form_validation->CI = & $this;
    $this->form_validation->set_rules($this->validation_rules);

    //run the validation
    if ($this->form_validation->run($this)) {

        //loop through $_POST data and change any $key[values] where needed
         foreach($this->input->post() as $k => $v){
             if($k == 'status'){
                 $v = ($v === 'publish') ? 1 : 0;

             }
             // recomplie $_POST with modified values into temp array and break out of loop
              $tmp[$k] = $v;
             continue;
         }

        //try to create a new page ( throw exception : build )  
        try{
            if(!Page::create($tmp)){
                throw new \ActiveRecord\ActiveRecordException('Arrrgh custom error required with some guess work?');
            }else{
                $this->session->set_flashdata('success', 'Page Successfully Created');
                redirect('admin/pages');
            }
        }catch(\ActiveRecord\ActiveRecordException $e){
            //log any errors thrown 
            log_message('error', $e->getMessage());
        }
        // validation failed, show form again
    }else{
        $this->create_form();
    }
}

1 Ответ

2 голосов
/ 17 февраля 2012

Есть ли причина, по которой вы используете Model::create()?

Я полагаю, что вашей проблемы нет, если вы используете

$model = new Model($attributes);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...