php activerecord save не работает в codeigniter - PullRequest
0 голосов
/ 10 ноября 2011

Я использую последний код воспламенителя (2.0.3) и php-active 0.0.1.

Все работают нормально, кроме save();

Код:

if($_POST)
{               
  $entry= Customers::find_by_routeid('4');
  $entry->routeid=5;
  $entry->save();              
}

Вот моя проблема: по какой-то причине я не могу понять вышеприведенный код, не работает, но если я беру код из if ($_POST), он работает нормально.

Что я делаю не так?


EDIT:

Спасибо, Дэмиен Пирси $this->input->post() добивается цели, но когда я раскомментирую комментарии в коде, проблема возвращается.

Код теперь:

if($this->input->post())
{
  $id = $this->input->post('id');
  $oldRoute = $this->input->post('oldRoute');
  $newRoute = $this->input->post('newRoute');

  $entry=  Customers::find_by_routeid($this->input->post('oldRoute'));
  $entry->routeid=$this->input->post('newRoute');
  $entry->save();

  /*
  if($oldRoute<$newRoute)
  {
    for ($i=$newRoute; $i>$oldRoute; $i--)
    {
      $element = Customers::find_by_routeid($i);
      echo $element->routeid -= 1;
      $element->save();
    }
  }
  */
}

Элементы новых идентификаторов ($element->routeid -= 1;) верны echo, но у меня та же проблема, что и в начале, и ни один из двух сохранений не работает.

1 Ответ

0 голосов
/ 10 ноября 2011

Вы не предоставили много подробностей или отладочной информации, поэтому я просто угадаю: попробуйте вместо этого использовать собственный обработчик сообщений CI.Вы должны var_dump() редактировать массив $_POST, посмотреть также isset () или нет, так как вы используете его как условие

if($this->input->post())
{
  //...
}

ОБНОВЛЕНИЕ:

Поскольку мы говорим о переменных Post, не думайте, что они именно такие, как вы хотите.Имейте в виду, что $this->input->post('field') возвращает FALSE , когда индекс отсутствует;это вполне может затормозить ваше состояние.Предполагая, что для этого вам нужны цифры, вы можете выполнить проверку, например

if($this->input->post('newRoute') AND is_numeric($this->input->post('newRoute'))
{
  $newRoute = $this->input->post('newRoute');
}
else
{
  // give it a default value, or raise an error, for example. If you need this
  // variables, and need them to be numbers, you cannot go on in case these 
  // conditions are not met, right?
}

И то же самое для $oldRoute. И да, хорошо, возможно, вы можете написать более чистый код, чем мой, но вы получите картину;)

...