2010-03-19 3 views
1

Мы создаем веб-приложение для отслеживания данных с использованием CakePHP, и у меня возникают некоторые проблемы с правильной структурой базы данных. У нас есть компании, которые имеют множество сайтов. Сайты имеют множество DataSamples. Теги haveAndBelongToMany Sites.Структура базы данных для моделей CakePHP

Это все хорошо. Проблема заключается в «ранжировании» сайтов в тегах. Нам нужно сохранить его в базе данных как архив. Я создал модель Rank, который устанавливается следующим образом:

rank (
    id (int), 
    sample_id (int), 
    tag_id (int), 
    site_id (int), 
    rank (int), 
    total_rows) 
) 

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

Это выглядит следующим образом:

[Site] => Array (
    [Sample] = Array(), 
    [Tag] = Array() 
) 

Когда я действительно ищу:

[Site] => Array (
[Tag] = Array (
    [Sample] => Array (
     [Rank] => Array (
      ...data... 
     ) 
    ) 
) 
) 

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

Мысли? Нужна более подробная информация? Просто спроси!

+0

Подходит ли бирка к образцу или сайту? –

ответ

1

Согласно формату данных, который вы хотите, я предлагаю вам изменения сайтов haveMany образцов в теги hasMany samples.And убедитесь, что вы Bulit таблицы, которая

samples_tags (
id (int), 
sample_id (int), 
tag_id (int) 
) 

А также проверить, как вы определили модель ассоциация правильно. Подробнее подробно смотрите HABTM in cookbook.

1

Чтобы получить этот формат ...

Tag hasOne Образец Образец hasOne или hasMany Ранг

Альтернативой является «модель взломать», как я называю, который в основном создание пользовательских методов с моделью класс, который выполняет пользовательские запросы и форматирует результаты, как вы пожелаете.

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