私のCakePHP(1.3)アプリケーションにプラグイン(https://github.com/webtechnick/CakePHP-FileUpload-Plugin)を使用しようとしています。CakePHP:FileUploadプラグインで新しいレコードを含むファイルを保存する
私には、PendingContract
とPendingContractFile
という2つのモデルがあります。 PendingContract
には、多くのPendingContractFile
レコードを含めることができます。新しいPendingContract
を保存するときに、アップロードしたPendingContractFile
を保存したいと思います。しかし、PendingContract
にIDがまだないので、私の保存メソッドが失敗し、それが私のPendingContractFile
の外部キーとして使用されています。ここで明確にするために
は、私のモデルは以下のとおりです。
<?php
class PendingContract extends AppModel {
var $name = 'PendingContract';
var $belongsTo = array(
'Supplier'
);
var $hasMany = array(
'PendingContractFile'
);
}
class PendingContractFile extends AppModel {
var $name = 'PendingContractFile';
var $belongsTo = array(
'PendingContract' => array(
'className' => 'PendingContract',
'foreignKey' => 'pending_contract_id'
),
'Author' => array(
'className' => 'User',
'foreignKey' => 'author_id'
)
);
}
そして、ここでは、私は私のPendingContract
を保存しています私のコントローラのメソッドです:
<?php
class PendingContractsController extends AppController {
function add() {
if (!empty($this->data)) {
if ($this->FileUpload->success) {
$this->Session->setFlash('Pending contract successfully created.');
$this->redirect(array('action' => 'index'));
}
else {
$this->Session->setFlash($this->FileUpload->showErrors());
}
}
}
}
現在、私は取得していますエラーは次のとおりです。
それは私の新しい1452:子行を追加または更新できません:外部キー制約が失敗しました(pending_contract_files、CONSTRAINT pendin g_contract_files_ibfk_1 FOREIGN KEY UPDATE CASCADE ON DELETE CASCADE ON(pending_contract_id)REFERENCESのpending_contracts(ID))
PendingContract
レコードにアップロードされたファイルを添付するように、私は
FileUpload
プラグインを使用するにはどうすればよい
?
AuthorまたはPendingContractレコードがあらかじめ保存されていないため、 'insert'が失敗しているようです。挿入するときには、これらの外部キーの両方が存在していなければなりません。私の推測では、どちらかまたは両方が欠けているということです。 – inkedmn
@inkedmn私は問題を特定しました。私はちょうど誰かが同じ問題を抱えているのかどうか、もしそうなら、彼らがどんな解決策に到着したのか疑問に思いました。 –
貼り付けたコードに基づいてデータを保存する方法がわからない –