CakePHP - Likes design (Типы отношений) - PullRequest
0 голосов
/ 29 ноября 2010

Я разрабатываю базу данных / таблицу для дресса, где каждый пользователь может публиковать / иметь несколько дресс.

http://book.cakephp.org/view/1040/Relationship-Types

Пользователь может иметь несколько платьев.

Многие платья принадлежат пользователю.


Моя таблица пользователей:

ID

имя

имя пользователя

Адрес электронной почты

PASSWD

...


Мой рабочий стол:

ID

имя

изображение

user_id

...

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

У меня такой вопрос, какими типами отношений (таблицами и соединениями) я должен управлять для этой функции.

Скажите, пожалуйста, о чем вы думаете:


любит

идентификатор Идентификатор пользователя dress_id

Но тогда возникает вопрос, какой правильный путь:

а. Многие лайки принадлежат пользователю, а многие лайки принадлежат платью.

B. Пользователь может иметь несколько Лайков, и Множество Лайков принадлежат Пользователю.

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

Ответы [ 2 ]

3 голосов
/ 29 ноября 2010

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

В вашей модельной ассоциации:

  1. Пользователь имеет много платье
  2. Пользователь имеет много лайков
  3. Лайк принадлежит пользователю
  4. Вроде принадлежит к платью
  5. Платье имеет много лайков
  6. Платье принадлежит пользователю

Код должен быть таким:

<?php  
class User extends AppModel {  
    var $name = 'User';
    var $hasMany = array('Dress', 'Like');
?>

<?php  
class Like extends AppModel {  
    var $name = 'Like';
    var $belongsTo = array('User', 'Dress');
?>

<?php  
class Dress extends AppModel {  
    var $name = 'Dress';
    var $hasMany = array('Like', 'User');
?>  

Я опустил другие атрибуты. Вы можете легко создать эти отношения из выпечки.

1 голос
/ 29 ноября 2010

try hasAndBelongsToMany Relation

<?php

class User extends AppModel {
    var $name = 'User';   
    var $hasAndBelongsToMany = array(
        'Dress' =>
            array(
                'className'              => 'Dress',
                'joinTable'              => 'like',
                'foreignKey'             => 'user_id',
                'associationForeignKey'  => 'dress_id',
            )
    );
}
?>
...