新しいレコードを作成するために、cakePHPにデータベース内のレコードを更新させようとしています。私のスクリプトは「FIRST」でチェックを行い、falseが返されない場合は新しいレコードを作成する必要があります。そうでない場合は、指定しているIDに基づいて既存のレコードを更新する必要があります。以下に、意図的に$ this-> Asset-> id=62を追加しました。強制的に更新を試みますが、機能しません。何か助けはありますか?(また、それが何をすべきかを理解できる場合は、おそらくより良いコードで私を案内してください:)ケーキに非常に新しい:
public function index() {
if($this->request->is("post")) {
$aid = $this->request->data['Asset']['asset_identifier'];
$type = $this->request->data['Asset']['asset_type_id'];
$asset = $this->Asset->find("first",array("fields" => array("Asset.id", "Asset.user_id", "Asset.status_id", "Asset.financial_id", "Asset.insurance_id"),"conditions" => array("Asset.asset_identifier" => $aid, "Asset.asset_type_id" => $type)));
if($asset != false) {
$uid = $this->Auth->user("id");
// UPDATE, depends on info:
$this->Asset->id = $asset['Asset']['id'];
foreach(array("financial_id", "insurance_id", "user_id") as $value) {
if($asset['Asset'][$value] != 0) {
$emails[] = $asset['Asset'][$value];
}
}
if(isset($emails) && count($emails)) {
$this->request->data['Asset']['status_id'] = 1;
$email = new CakeEmail();
$email->from(array('noreply@assetchase.co.za' => 'Assetchase.co.za'));
$email->subject('Assetchase.co.za result notification.');
foreach($emails as $value) {
$user = $this->User->find("first",array("fields" => array("username"),"conditions" => array("id" => $value)));
$email->to($user['User']['username']);
$email->send('A new notification, booyah!');
// Send an email with the username.
}
}
if($this->Auth->user("user_type_id") == 2) {
$this->request->data['Asset']['user_id'] = $uid;
} elseif($this->Auth->user("user_type_id") == 3) {
$this->request->data['Asset']['financial_id'] = $uid;
} elseif($this->Auth->user("user_type_id") == 4) {
$this->request->data['Asset']['insurance_id'] = $uid;
}
}
$this->Asset->id = 62;
if($this->Asset->saveAll($this->request->data)) {
$this->Session->setFlash("A new asset has been loaded",'success');
$this->redirect(array("controller" => "asset", "action" => "thankyou", "guest"));
} else {
$this->Session->setFlash('An error has occured.','default',array('class'=>'error'));
}
}
$assetTypes = $this->Asset->AssetType->find('list');
$this->set("assetTypes", $assetTypes);
}