Механизм пользовательских настроек для Yii - PullRequest
0 голосов
/ 05 июня 2010

Мне нужна помощь с механизмом пользовательских настроек для моего приложения на основе Yii.

Я создал следующую структуру БД для хранения пользовательских настроек:

  1. таблица user со следующими полями

    id | имя пользователя | электронная почта | и т.д.

  2. таблица settingslist (для хранения списка всех возможных настроек с описаниями) со следующими полями

    id | код | имя | описание

  3. таблица settings (для сохранения всех пользовательских настроек) со следующими полями

    id | идентификатор пользователя | код списка настроек | значение

Теперь я застрял в форме, которая позволяет пользователю изменять свои настройки. Раньше мне приходилось иметь дело с обычными моделями (например, для постов, комментариев и т. Д.), Где каждая новая модель имела только одну строку в базе данных (модель Post - id | title | body |) с определенным количеством атрибутов (полей таблицы). , Но теперь мне нужно хранить пользовательские настройки в 10-15 строках, и я не знаю, как применить механизм модели Yii для работы с этим, поэтому я могу получить эти настройки в одной форме (чтобы пользователь мог изменить свои предпочтения).

Любые предложения приветствуются.

Спасибо!

Ответы [ 2 ]

1 голос
/ 11 июня 2010

Не уверен, что критерии для вашей формы, но вы можете получить все настройки для конкретного пользователя с помощью следующего.

$criteria=new CDbCriteria;
$criteria->condition="id=".$user->id;
$settings=Settings::model()->findAll($criteria);

Затем пройдитесь по каждому из них, создав свою форму.

foreach($settings as $setting){
    $criteria->condition="code=".$settings->settingslistcode;
    $settingElement = SettingsList::model()->find($criteria);
    ...
}
0 голосов
/ 12 июня 2010

Ну, я не уверен, сохраняете ли вы настройки пользователя для его профиля на вашем сайте или для поста / комментария.

Список настроек в порядке, нам нужно определить все возможные параметры настройки. Затем, если вы сохраняете настройки сайта для своих пользователей, попробуйте колонку ProfileSettings в tbl users. Я обычно использую serialize ($ setting_array ()).

Если вы сохраняете пользовательские настройки для каждого сообщения, создайте таблицу user_post_settings и примените к пользователю ту же идею serialize (). Итак, один пользователь - один пост => одна строка.

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