у меня есть некоторые проблемы с cakephp 2.x и взаимосвязью моделей, у меня есть 3 модели: сообщение, пользователь и комментарий. Я хотел бы связать сообщение с его пользователем и комментарий с его пользователем.
В пост модели:
$belongsTo = array('Comment','User'),
$hasMany = array('CommentOfPost'=>array('className'=>'Comment'));
У меня есть привязка сообщения к пользователю и все комментарии к сообщению, но у меня нет пользователей комментариев.
Редактировать :
Вывод SQL
1 SELECT `Post`.`id`, `Post`.`title`, `Post`.`content`, `Post`.`tags`, `Post`.`created`, `Post`.`modified`, `Post`.`user_id`, `User`.`id`, `User`.`username`, `User`.`password`, `User`.`role`, `User`.`name`, `User`.`lastname`, `User`.`birthdate`, `User`.`email`, `User`.`created`, `User`.`modified` FROM `blog`.`posts` AS `Post` LEFT JOIN `blog`.`users` AS `User` ON (`Post`.`user_id` = `User`.`id`) WHERE `Post`.`id` = 16 LIMIT 1 1 1 0
2 SELECT `CommentOfPost`.`id`, `CommentOfPost`.`post_id`, `CommentOfPost`.`user_id`, `CommentOfPost`.`content`, `CommentOfPost`.`created` FROM `blog`.`comments` AS `CommentOfPost` WHERE `CommentOfPost`.`post_id` = (16)
Изменить: модель комментария
public $belongsTo = array('User' => array('className' => 'User'));
Почтовая модель
public $belongsTo = array('Comment' => array('className' => 'Comment'));
Редактировать :
Спасибо за ответ, у меня тот же результат, что и раньше, у меня есть сообщение и его пользователь, сообщение и его комментарии, но не пользователи комментариев.
Теперь моя модель Post
$hasMany = array(
'Comment' => array(
'className' => 'Comment',
)
),
$belongsTo = array(
'User' => array(
'className' => 'User',
)
);
Пользовательская модель
$hasMany = array('Comment' => array('className' => 'Comment'));
Модель комментария
$belongsTo = array('Users' => array('className' => 'User'), 'Posts' => array('clasName' => 'Post'));
Я использую постраничные запросы в своем PostsController
$this->Paginator->settings = $this->paginate;
$data = $this->Paginator->paginate('Post');
$this->set('posts', $data);
Редактировать :
Мои параметры разбиения на страницы
$paginate = array(
'limit' => 10,
'recursive' => 2,
'order' => array(
'Post.id' => 'desc'
)
);
Я пытаюсь с рекурсивной опцией и без нее
Хорошо, это сделано!
Для резюме у меня есть:
class User extends AppModel {
public $hasMany = array('Comment' => array('className' => 'Comment'));
}
class Post extends AppModel
{
$hasMany = array(
'Comment' => array(
'className' => 'Comment',
)
),
$belongsTo = array(
'User' => array(
'className' => 'User',
)
);
}
class Comment extends AppModel {
public $belongsTo = array('User' => array('className' => 'User'), 'Post' => array('clasName' => 'Post'));
}
PostsController extends AppController
{
....
$this->Post->recursive = 2;
$post = $this->Post->findById($id);
...
}
Спасибо за помощь, ребята, вы молодцы!
find()
? - person marian0   schedule 23.09.2014'recursive' => 2
? - person marian0   schedule 23.09.2014findById()
, я получаю хороший пост с его пользователем и комментариями, но не с комментариями пользователей, я пытаюсь с$this->Post->recusrive = 2;
, но безрезультатно... думаю, я глупый - person user3566446   schedule 23.09.2014