cakephp保存数据给了我一个错误

cakephp保存数据给了我一个错误,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我正在尝试插入以下数组 foreach($list as $l) { $data = array( 'source_number'=> $l['Csv']['Source'], 'destination_number'=> $l['Csv']['Destination'], 'seconds'=> $l['Csv']['Seconds'], 'callerID'=> $l['Csv

我正在尝试插入以下数组

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
我错过了什么?
谢谢

您应该执行以下操作:

$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();

这可能对你有用

首先,您可以确保在CallCenterBillingController中使用CallcenterBilling模型: public$uses=array('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);
  }

}

注:如果这没有帮助,请显示控制器代码。

只是检查一下,您的控制器的
$uses
数组中是否有
CallcenterBilling
?您能否显示控制器的其余部分,可能还有型号?代码中此时可能没有访问CallcenterBilling控制器的权限。我还认为你应该做$this->MyModel->create();在保存之前,在循环中保存时。*(我指的是CallcenterBilling模型,而不是控制器),它不会,因为问题是
$this->CallcenterBilling
不存在。@Dunhamzzz:至少尝试一下。读取他收到的错误,他正在调用非对象的保存,因此,他将无法在
$this->CallcenterBilling
上调用任何内容。你的答案只会触发同样的错误。@Dunhamzzz:你怎么会不喜欢我的答案而不去实现它呢?因为我可以看出,从OPs问题中产生的错误判断,这是一个不常见的错误。
$uses
数组在
2.0
中被删除,取而代之的是
App::import
否,它没有被删除,也没有被弃用。您提到的“uses”是basics.php中的一个函数