2012-03-11 3 views
1

Users есть много Instruments, но Instruments являются статическими, поэтому я хотел бы использовать их, обратившись к определенному постоянному массиву, а не получая их из базы данных. Этот массив должен быть доступен Просмотров и Контроллеры.CakePHP: использование константного массива для поля формы

Я также чувствую, что набивка кучи случайных несвязанных констант в bootstrap беспорядок.

Каков наилучший способ сделать это - где я должен поместить этот массив?

+0

вы знаете, вот что за бутстрап есть. Если это вас так беспокоит, создайте класс в libs и импортируйте его. –

ответ

0

Если вы хотите использовать какой-то перечисление Я думаю, вы ищете что: http://www.dereuromark.de/2010/06/24/static-enums-or-semihardcoded-attributes/

public static function instruments {} 

Но в вашем случае инструменты не должны быть статичными, но реальная таблица с данными (Instrument belongsTo пользователя - например, несколько строк с одним и тем же user_id). Перечисления работают только по-другому (по отношению к отношениям).

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

Если вы действительно хотите сохранить такой список массива в одном столбце пользователя (который я не рекомендую в вашем случае), вы можете использовать битовую маску: http://www.dereuromark.de/2012/02/26/bitmasked-using-bitmasks-in-cakephp/

+0

Я, кажется, ввел вас в заблуждение. У пользователя много инструментов. Я не хочу определять инструменты в базе данных (например, настольные инструменты будут содержать гитару, пианино и т. Д.). Вместо этого я хочу взять данные, которые будут определять инструменты и просто хранить их в массиве. Мне интересно, является ли использование '$ useTable = false' хорошей идеей и просто определяет статический массив в модели' Instruments'. – Garrett

+0

ОК, конечно, но это все еще не объясняет, где вы храните данные отношения (user_id, instrument_id). у вас есть поле в таблице пользователя? или эти данные вообще не хранятся в БД? – mark

0

использовать массив Datasource. Он позволяет определять статические массивы данных и использовать ассоциации.

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