CakePHP - Ассоциации моделей MVC - Как я могу структурировать эту модель данных? - PullRequest
1 голос
/ 15 декабря 2011

быстрый вопрос, который я застрял с часов:

Для моего проекта сайта cakePHP (с использованием версии 2.0) у меня есть 2 модели.Они немного неясны, поэтому я переведу модель к стандартным моделям сообщений в блоге.

Так что у меня есть модель "Сообщений" и для этих многих "Категории".

class Post
$belongsTo = 'Category'

class Category
$hasMany = 'Post'

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

Как бы я связал это?

  • Еще одна модель «MainPost»?Это кажется излишним, поскольку оно будет иметь тот же контент, что и сообщения.
  • Логический столбец "is_main" в сообщениях?Не кажется правильным, поскольку только один пост из каждой категории может быть "основным".
  • Столбец mainpost_id в категориях?Звучит хорошо, но «$ ownTo» - единственная ассоциация, которая позволяет внешнему ключу находиться в текущем классе.И сказать, что категория принадлежит посту, когда обратное тоже верно, кажется мне неправильным.Также принадлежит ассоциация «многие к одному», и я хочу, чтобы она была ассоциацией «один к одному».

Пожалуйста, помогите мне, [введите имя].Ты моя единственная надежда.;)

Редактировать: Я думаю, было бы замечательно, если бы был способ иметь отношение "hasOne", но иметь внешний ключ в том же классе, что и $ hasOne X, а не в другом, как обычно.

Ответы [ 2 ]

1 голос
/ 17 декабря 2011

Вот одно из решений:

[ categories ]
id
name
mainpost_id

[ posts ]
id
category_id
title
text
  • Категория hasMany Сообщение
  • Сообщение принадлежит Категория
  • Категория hasOne MainPost ( см. Код )
0 голосов
/ 15 декабря 2011

Я думаю, что вы используете отношения hasAndBelongsToMany .... подробности смотрите по этой ссылке http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html

...