CakePhp сохранить данные дает мне ошибку - PullRequest
0 голосов
/ 07 ноября 2011

Я пытаюсь вставить следующий массив

foreach($list as $l)
    {

        $data = array(

        'source_number'=> $l['Csv']['Source'],
        'destination_number'=> $l['Csv']['Destination'],
        'seconds'=> $l['Csv']['Seconds'],
        'callerID'=> $l['Csv']['CallerID'],
        'disposition'=> $l['Csv']['Disposition'],
        'cost'=> $l['Csv']['Cost'],
        'billing_cost'=> $l['Csv']['newCost']

        );
        //$total[] = $l['Csv']['newCost'];
        debug($data);
        $this->CallcenterBilling->save($data);
        unset($data);

    }

Но это подводит меня к этой ошибке

( ! ) Fatal error: Call to a member function save() on a non-object in C:\wamp\www\wadic\app\Controller\CallcenterBillingsController.php on line 61
Call Stack
#   Time    Memory  Function    Location
1   0.0005  708160  {main}( )   ..\index.php:0
2   0.0169  2775744 Dispatcher->dispatch( ) ..\index.php:96
3   0.0279  3946176 Dispatcher->_invoke( )  ..\Dispatcher.php:89
4   0.0293  4016984 Controller->invokeAction( ) ..\Dispatcher.php:107
5   0.0293  4017992 ReflectionMethod->invokeArgs( ) ..\Controller.php:473
6   0.0293  4018024 CallcenterBillingsController->import( ) ..\CallcenterBillingsController.php:0

что мне не хватает?спасибо

Ответы [ 2 ]

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

Во-первых, вы можете быть уверены, что в CallcenterBillingsController используется модель CallcenterBilling: публичный $ использует = массив ('CallcenterBilling');

Вторичный вы можете оптимизировать это, сохраняя не в цикле: см saveAll метод модели

так что вы получите что-то вроде:

class CallcenterBillingController extends AppController {

  public $uses = array('CallcenterBilling');

  public function someaction() {

    $data = array();
    foreach ($list as $l) {

      $data[] = array(
          'source_number' => $l['Csv']['Source'],
          'destination_number' => $l['Csv']['Destination'],
          'seconds' => $l['Csv']['Seconds'],
          'callerID' => $l['Csv']['CallerID'],
          'disposition' => $l['Csv']['Disposition'],
          'cost' => $l['Csv']['Cost'],
          'billing_cost' => $l['Csv']['newCost']
      );
      //$total[] = $l['Csv']['newCost'];

    }
    debug($data);
    $this->CallcenterBilling->saveAll($data);
  }

}

пс. если это не помогает, пожалуйста, покажите код контроллера.

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

Вы должны реализовать это:

$this->CallcenterBilling->read(null, 1);
$this->CallcenterBilling->set(array(
   'source_number'=> $l['Csv']['Source'],
    'destination_number'=> $l['Csv']['Destination'],
    'seconds'=> $l['Csv']['Seconds'],
    'callerID'=> $l['Csv']['CallerID'],
    'disposition'=> $l['Csv']['Disposition'],
    'cost'=> $l['Csv']['Cost'],
    'billing_cost'=> $l['Csv']['newCost']
));
$this->CallcenterBilling->save();

Это может сработать для вас.

...