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中的一个函数