I might add: The delete does actually work, and $slide->delete() does delete its contents (and the contents related data) etc. Its just that the error shows!
I delved into the ORM class "model.php", and found what i think is causing the issue described above.
there is some duplicate code, that performs exactly the same loop twice, once before a delete and once after. i think the relationships are broken after the forst loop, the second one barfs. I may be wrong but ive commented out the second lot of code and my errors are gone, and all is working as expected.
UPDATE: I was incorrect. the code is not exactly the same.
Makes me think that I should have a "types" table, then a content_types pivot table, which is just a map of content_id to type_id, even though content can only ever have one (hence type_id in contents table).
At least the delete would work that way, so Content could _has_one Type, and delete it when Content gets deleted. This is even odder because cascade_* are set to false.
removed the relation of content to type entirely. Content still has a type_id.
Created a function in Content called Type() which will create a Type object from this->type_id and return its title. woo.
I normally set relations like in the OP and have never had this issue, maybe i'm missing something so stupid, i don't know, but i've finished an entire thread to myself. hungry, must be.