2014-02-19 4 views
0

В принципе, я хочу достичь следующей системы, такой как в Twitter и других, в CakePHP.Следуйте за системой в CakePHP

У меня есть таблица пользователей, которая имеет всю информацию о пользователе. В профиле каждого пользователя отображается следующая кнопка, которая после щелчка должна создать новую запись в таблице «follow», которая содержит user_id, то есть идентификатор пользователя и идентификатор пользователя follower_id, то есть идентификатор пользователя в журнале. Поэтому каждый раз, когда пользователь нажимает на профиль, он должен создать новую запись в «follow».

Я видел несколько таких вопросов, но не нашел идеального и полезного ответа.

Заранее спасибо.

+0

В чем проблема? код обмена здесь – Dezigo

+0

Я хотел знать, какая ассоциация должна быть сформирована. Чтобы сформировать HABTM, мне нужны две таблицы. Но у меня есть только таблица пользователей и модель пользователя. Я могу использовать только одну таблицу для HABTM, но я точно не знаю, как это сделать в этом случае. И если не HABTM, могу ли я достичь этого через другой тип ассоциации? Или без какой-либо ассоциации? – ashishsanjayrao

+0

Прямо сейчас, в моей модели пользователя, у меня определено отношение HABTM. общественности $ hasAndBelongsToMany = массив ( 'Последователь' => массив ( 'имя класса' => 'User', 'joinTable' => 'следует', 'ForeignKey' => 'user_id', 'associationForeignKey' => 'follower_id', 'unique' => 'keepExisting', 'conditions' => '', 'fields' => '', 'заказать' => '', 'limit' => '' ', ' offset '=>' ', ' finderQuery '=>' ', ' с '=>' Follow ' ) ); – ashishsanjayrao

ответ

2

Что-то вроде:

пользователя Модель

public $hasAndBelongsToMany = array(
    'Follower' => array(
     'className' => 'User', 
     'joinTable' => 'your_join_table', 
     'foreignKey' => 'following_id', 
     'associationForeignKey' => 'followed_id', 
     'unique' => 'keepExisting' // If you do not want records to be deleted 
    ), 
    'Followed' => array(
     'className' => 'User', 
     'joinTable' => 'your_join_table', 
     'foreignKey' => 'followed_id', 
     'associationForeignKey' => 'following_id', 
     'unique' => 'keepExisting' // If you do not want records to be deleted 
    ) 
) 

предполагается, что ваш $ user_id = 2 является вошедшим пользователем и $ followed_id = 10 является пользователем, он хочет следовать, то вы должны создать массив как

$data = array(
    'User' => array(
     'id' => 2, 

    ), 
    'Followed' => array(
     'Followed' => array(
      0 => 10, 
      1 => 12 // if you want you can store 2 records at the same time, 
         // i.e. you have a checkbox for every user 
         //and the follower can check multiple cheboxes before submit   
     ) 
    ) 
) 

, а затем

$this->User->saveAll($data) 
+0

Как сохранить данные через это? И какой из следующих_следующих_ид и follow_id - текущий идентификатор пользователя, а какой идентификатор ID другого пользователя? – ashishsanjayrao

+0

@ashishsanjayrao see my edit – arilia

+0

Я использовал ваш метод именно так, как вы мне сказали. Он по-прежнему не сохраняет данные в объединенной таблице. – ashishsanjayrao

0

Если у вас есть рабочий процесс, ничто не мешает вам его реализовать.

Создайте модель User, модель Follows, которая имеет отношение ManyToMany к User; внедрить контроллер, который выполняет фактическое выполнение, между текущим пользователем (взятым из компонента Auth) и пользователем, которому необходимо следовать (взято из URL, скорее всего); наконец, добавьте представление с помощью кнопки follow, вызывающей метод контроллера.

Продолжайте попытки, и если вы наткнетесь на некоторые трудности, поделитесь тем, что вы пробовали, и мы сможем вам помочь.

+0

Итак, вы предлагаете мне создать новую модель и контроллер для следующей системы, а не делать это через UserController? И ManyToMany вы имеете в виду HABTM? Имя объединенной таблицы приведено ниже. Так должен ли я создать контроллер и модель для самой объединенной таблицы? – ashishsanjayrao

+0

Нет, я думаю, я был недостаточно ясен. @arilia объяснил лучше в своем ответе. Я не говорил о двух моделях, но определял два отношения типа ManyToMany (HABTM) из модели User. Нет, вы не должны создавать ничего для объединенной таблицы. – linkyndy

+0

Извините, я неправильно понял. В любом случае спасибо. Сейчас я пытаюсь применить метод Арилии. Однако он пока еще не сохраняет данные. – ashishsanjayrao

Смежные вопросы