Помощь с (CakePHP) дизайном базы данных - PullRequest
0 голосов
/ 13 августа 2010

Я не уверен, как настроить это, используя соглашения Cake.У меня есть таблица пользователей (довольно стандартная: id (pk, автоинкремент), имя пользователя, пароль), таблица групп (также довольно стандартная: id, name, user_id) и таблица практики (например, практика врача, а некак "практика делает совершенным").Таблица практики будет принадлежать одному пользователю (который принадлежит группе dr) и будет содержать ноль или более других пользователей, которые относятся к практике (и являются стандартными членами).

здесь очень Черновик того, о чем я думаю:

user ---(belongs to)---> group
  |
  |
  +<----(belongs to)---- practice
  |                        ^
  |                        |
  +-------------------(belongs to)

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

Обычно я понимаю, как сделать так, чтобы «на практике было много пользователей» и «практика принадлежит пользователю».Однако я не понимаю, как мне указать, что у практики "есть один" пользователь, но также "много" пользователей.Это потому, что практика не знает группы, к которым принадлежит пользователь в Cake.И (насколько мне известно) я не могу просто сказать, что Practice.owner_id - это внешний ключ, который соответствует user.id », потому что Cake не поймет этого.

Если я ошибаюсь, не могли бы вы предоставитьобъяснение / ссылка на документ, чтобы помочь мне в моем пути?Спасибо ТАК.

1 Ответ

1 голос
/ 13 августа 2010

Я не могу просто сказать, что practice.owner_id - это внешний ключ, соответствующий user.id ", потому что Cake этого не поймет.

Ну, вы можете ...просто не так, как вы думаете.

Вы устанавливаете принадлежность для своей модели практики ... ваше поле user_id в практике будет владельцем.Затем настройте другую принадлежность для вашей пользовательской модели с помощью поля Practice_id.Если вы хотите, вы можете даже настроить hasMany на практике, чтобы привязать его к пользователю.Просто называйте принадлежащие и имеющие много ассоциаций по-разному.Позвоните в Практику, принадлежащую пользователю. Владелец вашей модели.Затем, когда вы на самом деле извлекаете записи из базы данных, вы получаете на практике массив Owner и массив User (при условии соответствующих $ рекурсивных уровней.)

Чтение этого может привести к путанице.Подводя итог:

Ассоциации в пользователе:

  • принадлежит практике

Ассоциации в практике:

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