バージョン : FuelPHP 1.7
FuelPHP で CRUD - Orm Package - FuelPHP ドキュメント にあるような
$entry = Model_Article::find(4);
$entry->delete();
って感じのコードを書いていたんですが、対象のレコードは消える一方で新しいレコードが追加されるという奇妙な現象に悩むこと小一時間、たどり着いたのが下記の一文。
In the previous example the $entry variable and its object still exist. The primary keys are however set to null and the object itself is considered a new instance. If you save it after deletion it will be re-entered into the database and be given a new primary key when auto_increment is switched on.
つまりは delete()
しても save()
すると auto_increment によって振られた新しい PK によって不死鳥の如く再インサートされるというのです。確かにそんな感じの挙動はしているんですが特に消した後に save()
を打っている箇所なんてないはず。親の cascade_save で道連れ save が起きてる説も疑ったんですが false にしても挙動変わらずで迷宮入り。
ちょっとソース読まないといけないなと思いつつとりあえず DB::query()
で SQL 書いて hard_delete()
的なメソッドを加えることで対処してしまいました。これは要継続調査。