私は所有者と車の間にmany_many関係(これにはmanymanydataobjectmanagerを使用できません)でdataobjectmanagerを使用しています。新しい車が作成されるたびに、所有者のすべてのインスタンスを反復処理し、そのIDを新しい車のIDとともにリンクされたテーブルに追加します。
私の問題は、これを行うためのコードがonafterwriteメソッド内にあり、2回呼び出されることです。理由はわかりません。また、私の3人の所有者にとって、リンクされたテーブルに奇妙な行を作成していることに気づきました。最初の2つのIDが順番になり、次に1つが固定されます。したがって、3行なしで1行目、2行目、4行目になります。
これは私のonAfterWriteメソッドです
public function onAfterWrite() {
if(Permission::check('ADMIN')){
$Pages = DataObject::get('Owner');
foreach($Pages as $owner) {
DB::query("INSERT INTO Owner_Cars (OwnerID, CarID) VALUES ('". $owner->ID . "', '" . $this->ID . "')");
}
}
else {
echo "Failure";
return false;
}
return parent::onAfterWrite();
}
何かアドバイスをいただければ幸いです。
ありがとう