При создании приложения в Laravel 4 после прочтения книги Т. Отуэлла о хороших шаблонах дизайна в Laravel я обнаружил, что создаю репозитории для каждой таблицы приложения.
В итоге я получил следующую структуру таблицы:
- Учащиеся: id, name
- Курсы: id, name, teacher_id
- Учителя: id, name
- Назначения: id, name, course_id
- Баллы (действует как стержень между учениками и заданиями): student_id, assign_id, score
У меня есть классы репозитория с методами поиска, создания, обновления и удаления для всех этих таблиц. Каждый репозиторий имеет модель Eloquent, которая взаимодействует с базой данных. Отношения определены в документации по каждой Laravel: http://laravel.com/docs/eloquent#relationships.
При создании нового курса все, что я делаю, это вызов метода create в репозитории курсов. У этого курса есть задания, поэтому при его создании я также хочу создать запись в таблице баллов для каждого учащегося курса. Я делаю это через репозиторий присвоений. Это означает, что репозиторий присваивания связывается с двумя черными моделями с помощью модели Assignment and Student.
Мой вопрос в том, что, поскольку это приложение, вероятно, будет расти по размеру, и будет добавлено больше отношений, хорошо ли использовать связь с различными моделями Eloquent в репозиториях, или это должно быть сделано с использованием других репозиториев (я имею в виду вызов других репозиториев из репозиторий Assignment), или это должно быть сделано в моделях Eloquent вместе?
Кроме того, хорошо ли использовать таблицу оценок в качестве точки между назначениями и учениками или это должно быть сделано где-то еще?