После просмотра того, что вы переписали, я думаю, что понимаю, что вы делаете. Ваша текущая структура не будет работать. Там нет ссылки в постах на друзей. Поэтому, основываясь на опубликованной вами схеме, друзья НЕ МОГУТ добавлять какие-либо посты. Я думаю, что вы пытаетесь сделать ссылку на друга как одного из других пользователей. Это означает, что FRIEND пользователей - это просто еще один пользователь USER в таблице USERS. Это самореферентные отношения HABTM. Итак, вот что я хотел бы предложить:
1- Сначала убедитесь, что в базе данных создана таблица HABTM:
- MySQL CREATE TABLE users_users
(user_id
char (36) NOT NULL,
friend_id
char (36) NOT NULL);
2- Установить отношения в пользовательской модели.
var $hasAndBelongsToMany = array(
'friend' => array('className' => 'User',
'joinTable' => 'users_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'friend_id',
'unique' => true,
),
);
var $hasMany = array(
'Post' => array(
'className' => 'Post',
'foreignKey' => 'user_id'
),
);
3 - используйте леса для вставки нескольких записей, связывания друзей и добавления сообщений.
4- Добавьте функцию просмотра записи на контроллер пользователя:
function get_user($id)
{
$posts = $this->User->find('first', array(
'conditions' => array('User.id' => $id),
'recursive' => '2'
));
pr($posts);
}
5 - Теперь вы можете запросить таблицу User с помощью рекурсии, чтобы извлечь записи, используя следующую команду:
http://test/users/get_user/USER_ID
6- Ваш вывод покажет все записи (рекурсивно), включая друзей и их сообщения в возвращенном дереве данных, когда вы pr ($ posts)
Я знаю, что это длинный пост, но я думаю, что он обеспечит лучшее решение для того, что вы пытаетесь сделать. Сила CakePHP невероятна. Это кривая обучения, которая убивает нас.
Счастливого кодирования!