Учитывая
А-> B-> C-> D
и указатель на, скажем, объект B, Вы удалили бы его
1. свободный любая память, принадлежащая членам B
2. скопируйте содержание C в B (это включает его "следующий" указатель)
3. удалите весь объект C
, Конечно, необходимо будет быть осторожными относительно пограничных случаев, такими как работа над списками одного объекта.
Теперь, где был B, у Вас есть C и устройство хранения данных, которое раньше было C, освобожден.
Это может быть один из тех случаев, когда вам нужно использовать метод запроса .
Вызовы SQL, которые вы не можете или не хотите выполнять через другие методы модели (осторожно - это правда очень мало обстоятельств) могут быть созданы с использованием метода query () модели.
$votes = $this->Vote->query('SELECT Vote.* FROM votes Vote
JOIN comments Comment ON (Vote.comment_id = Comment.id)
JOIN posts Post ON (Comment.post_id = Post.id)
JOIN users User ON (Post.user_id = User.id)
WHERE User.id = 1');
Он должен вернуть массив записей голосования, как и метод find.
foreach ($votes as $vote):
echo $vote['Vote']['id'];
endforeach;
Вместо того, чтобы выполнять пользовательский запрос SQL, вы можете явным образом объединить таблицы для фильтрации по полю косвенно связанной таблицы. Взгляните на эту страницу, чтобы узнать, как присоединиться к голосам и пользователям через комментарии: http://book.cakephp.org/view/872/Joining-tables