Вы, наверное, не читали мой ответ в другом вопросе :))
У меня есть 3 таблицы, содержащие информацию о пользователях: одна для учащихся, одна для учителей и одна для администраторов. Они никак не связаны. Я не хочу создавать панель для администраторов, где отображается список студентов и преподавателей.
Проблема в том, что вы разделяете похожие данные на 3 разные таблицы, в данном случае информацию о пользователе. Поэтому, когда вы пытаетесь управлять этими данными, вы натыкаетесь на кирпичную стену: вы упускаете отношения, когда разделяете их на 3 таблицы.
Единственный способ добиться этого — использовать переменную $uses в контроллере администратора.
У вас неправильное представление о контроллере. Каждый контроллер управляет потоком данных конкретной модели (и связанных моделей). Это не означает, что вы должны оставаться в контроллере администратора, чтобы выполнять административные действия. От модели, которой вы хотите манипулировать, зависит, в каком контроллере вам нужно находиться.
Однако во многих местах я читал, что это плохая практика.
Теперь главный вопрос: использование $uses — это красный флаг того, что вы делаете что-то не так: вам нужен доступ к модели, которая не имеет ничего общего с вашим текущим контроллером. Так вот, в программировании всегда есть исключения, иногда нам нужен доступ к этой модели. Вот где появляется loadModel. Потому что это должно быть редко. Если вам очень нужна модель, вам нужно будет часто вызывать loadModel, что громоздко, для чего и нужен $uses, но тогда это означает, что что-то не так с вашим дизайном приложения :))
Итак, вы можете сказать, что использование $uses является признаком плохого решения (в дизайне БД или структуре приложения); и поэтому много использует loadModel.
Изменить: Any solutions?
Я дал одно решение в другом вопросе. Но если вы хотите, чтобы все они были в одном месте, у вас может быть 1 таблица пользователей с информацией о пользователях. У каждого пользователя может быть один ученик, учитель, администратор и поле «группа», чтобы решить, к какой группе относится пользователь. Третье решение использует $uses. На самом деле его влияние на производительность не будет проблемой. Но это будет довольно запутанно, когда вы будете развивать свое приложение дальше. Вот о чем вам нужно беспокоиться. Например, я могу сказать, что если вы используете Auth, вам нужно немного настроить его, чтобы он работал с 3 моделями. Если вы используете таблицу пользователей, это будет намного проще.
person
Anh Pham
schedule
31.07.2011