CakePHP Твиттер-клон: Не могу заставить работать систему слежения - PullRequest
0 голосов
/ 06 октября 2011

Извините за неописуемый заголовок, но я не уверен, как его сформулировать. В настоящее время я пробую свои силы в разработке клона Twitter с cakePHP, так как я новичок в веб-программировании. Я пошел с 3 таблицами:

пользователей (идентификатор, имя)

  • id - это автоматически сгенерированный идентификатор
  • имя пользователя

твиты (id, content, user_id)

  • id - это автоматически сгенерированный идентификатор
  • содержание - это текст твита
  • user_id - это идентификатор пользователя, который сделал сообщение

подписчиков (id, user_id, follow_id)

  • id - это автоматически сгенерированный идентификатор
  • user_id - это пользователь, который делает следующее
  • follow_id - это пользователь, за которым следят

Теперь почти все в основном работает, даже несколько следуют функции. Тем не менее, я думаю, что, возможно, неправильно настроил модель отношений. На самом деле, я уверен, что это неправильно.

Прямо сейчас, это модельные отношения:

  • Пользователь: имеет много твитов, имеет много последователей
  • Твиты: принадлежит пользователю
  • Подписчики: принадлежит пользователю

Я почти уверен, что отношения с Фолловерами неправильные, но с этим я и работал. Прямо сейчас то, что работает, - это вход пользователя в систему / выход из системы, сеансы, размещение сообщений, удаление собственных сообщений и последующее использование (а затем возможность просматривать их твиты).

Что сейчас не работает, так это когда я пытаюсь получить список людей, за которыми я следую, или людей, которые следуют за мной. Проблема в том, что я не уверен, как получить доступ к этим данным.

Мне нужен экран, на котором я могу щелкнуть ссылку, чтобы увидеть всех людей, на которых я подписан, а затем увидеть все их последние твиты.

Например, я полагаю, что я могу использовать запрос find (), чтобы получить список всех людей, на которых я подписан, но, как вы можете видеть из приведенной выше таблицы Подписчиков, этот запрос возвращает только идентификаторы пользователей из последователь и последователь. Из этих данных, как мне получить доступ к их именам и последним твиттам?

Я делаю два поиска? Это то, что я могу переопределить в моих модельных отношениях, чтобы в моем файле ctp я мог просто просмотреть php и использовать что-то вроде:

$this->$data['Tweet']['userID']
$this->$data['User']['name']
$this->$data['Tweet']['content']

Извините, я не уверен, правильно ли я объяснил ...

Я надеюсь, что мое намерение ясно. Любой совет приветствуется!

Спасибо!

1 Ответ

2 голосов
/ 06 октября 2011
app/models/user.php

class User extends AppModel{
      var $name = 'User';

      var $hasAndBelongsToMany = array(
            'Follower' => array(
                  'className'             => 'Follower',
                  'joinTable'             => 'user_users',
                  'foreignKey'            => 'user_id',
                  'associationForeignKey' => 'child_user_id'
            )
      )
}

app/models/follower.php

class Follower extends AppModel{
      var $name     = 'Follower';
      var $useTable = 'users';
}

Вам нужно будет составить таблицу user_users с полями user_id и child_user_id.child_user_id будет идентификатором подписчика, вы можете назвать его идентификатором подписчика, если хотите, но это может сбить вас с толку, если вам понадобится установить подобное отношение в будущем.

Попробуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...