Официальный сайт студ.городка НГТУ
Программирование и БД » Вопрос по CakePHP 

#1  27.03.08 20:55

Вопрос по CakePHP

В общем дело такое:
Есть 3 модели user, post, thread.
user hasmany post, thread
post hasone user, thread
thread hasone use, hasmany post

При выборке:
$this->Thread->read(null, $id)

У постов нет юзеров. Так и должно быть? И как с этим бороться?

Offline

#2  27.03.08 23:23

Re: Вопрос по CakePHP

$this->Thread->recursive=2;
но лучше делать $this->Post->findAllByThreadId($id);

Offline

#3  28.03.08 07:28

Re: Вопрос по CakePHP

XuMiX, спасибо, попробую. А в чем отличие то?
Дело в том что у меня для каждого трэда хранится первое сообщение и тема...

Offline

#4  28.03.08 12:19

Re: Вопрос по CakePHP

Rastaman, хотя.. да, лучше выдрать рекурсивно.. иначе получится так, каждый элемент будет:
Post+Thread+User
если сделать рекурсивно,будет Thread+n*Post+User
Либо сделать запрос ручками;)
и, вообще, ассоциаций достаточно таких, думаю:
user
post belongsto user, belongsto thread
thread belongsto user, hasmany post,
иначе, при вытягивании юзера через read - будут вытягиваться все треды и посты

Offline

#5  29.03.08 10:22

Re: Вопрос по CakePHP

Написал для post belongto user запрос, хотел чтобы выбиралось тольки имя пользователя, долго мучался пока не раскопал аолшебную подстановку $__cakeID_$ но она почему то подставляет совсем не то. Вместо того чтобы подствить user_id она подставляет просто id короче. Можно с ней как то бороться? Или в эту сторону даже не стоит копать. Просто на самом деле болдьшая выборка получается.

Offline

#6  30.03.08 00:10

Re: Вопрос по CakePHP

а что тебе мешает сделать полностью свой запрос? просто сделай в нем алиасы для таблиц такие же, как делает кака и получишь свои обьекты в нужном виде

Offline

#7  30.03.08 11:47

Re: Вопрос по CakePHP

XuMiX написал(а):

а что тебе мешает сделать полностью свой запрос?

sql не знаю((

Offline

#8  30.03.08 14:09

Re: Вопрос по CakePHP

Rastaman, ну, если вкратце:

Код: sql:

SELECT Post.*, User.name, User.id FROM posts AS Post LEFT JOIN users AS User ON (User.id=Post.user_id) WHERE Post.id=

Код: php:

//это в коде модели
function getPostById($id)
{
    $sql = '';//см. выше
    $db =& ConnectionManager::getDataSource('default');
    $id = $db->value($id);
 
return $this->query($sql . $id);
}
//в контроллере
$post = $this->Post->getPostById($id);

ну, и у какы есть еще такое:
{$__cakeForeignKey__$}
PS.  учи sql

Offline

Программирование и БД » Вопрос по CakePHP 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.073 сек.
Выполнено 14 запросов.