Является ли хорошей практикой использование статических методов поиска в моделях Doctrine? - PullRequest
2 голосов
/ 21 октября 2010

Иногда у меня возникают сложные процедуры поиска, и я чувствую себя грязно, чтобы повторить этот код в моем контроллере.

Теперь я думаю, что можно сделать что-то вроде этого:

class User extends BaseUser
{

    private static function getTable()
    {
        return Doctrine_Core::getTable('User');
    }

    public static function findAll()
    {
        return getTable()->findAll();
    }

    public function currentEnrolments() {
        $query = Doctrine_Query::create()
                ->from('Enrolment e')
                ->where('e.user_id = ?', $this->id)
                ->addWhere('e.finish_date IS NULL');
        return $query->execute();
    }

}

Это хорошая практика?Или я должен размещать только нестатические элементы, как запрос, который я показал?

Ответы [ 2 ]

2 голосов
/ 21 октября 2010

Как правило, если это экономит ваше время, вам нечего терять, и вы можете сэкономить каждую минуту.

Такие функции, как getTable и findAll, вероятно, не сильно вас спасут, но пользовательские запросы для поиска вещей, более специфичных для вашего приложения, определенно будут стоить того.

1 голос
/ 22 октября 2010

У меня почти такой же подход.

  • Я бы не стал беспокоиться о ваших статических прокси getTable() и findAll().
    • Это на самом деле не добавляет никакого значения вашему коду.
    • Я, лично, никогда не вызываю findAll() на любом объекте модели, так как вам обычно нужно
      • для перекрестногопроверить по внешнему ключу
      • paginate / sort
      • ...
  • относительно вашей функции currentEnrolments(), этоСтоит сделать, поскольку у вас есть немного логики в этом ->addWhere('e.finish_date IS NULL'), что объясняет, что вы не можете использовать "магическое" отношение Учения ->Enrolment.Может быть, это то, что Doctrine 2 разрешает, нужно проверить это ...

С уважением

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