2015-10-07 2 views
-1

Я смущен тем, как мы можем эффективно создавать код с помощью ORM в CakePHP3.Как работает ORM в CakePHP3

У меня есть 2 месяца опыт в CakePHP2 и теперь я хотел бы перейти к CakePHP3, но я запутался о некоторых основах CakePHP3:

  1. Как ОРМ работа в CakePHP3?

  2. Как CakePHP3 эффективнее, чем CakePHP2?

Я уже читал Cookbook 3.x с официального сайта CakePHP, но я все еще смущен.

Я новичок в концепции ORM. Пожалуйста, могу ли я помочь разобраться в основах ORM, почему мы используем его в CakePHP3, и как использование ORM может быть более эффективным и генерирует меньше кода?

Заранее спасибо.

+0

Я рекомендую вам [учебник блога] (http://book.cakephp.org/3.0/en/tutorials-and-examples/blog/blog.html) - и затем перейдите к своему вопросу. – AD7six

+0

уже краткий учебник по блогам и кулинарная книга 3.x с официального сайта .. но неспособный понять, почему мы используем ORM в cakephp3.and также хотим знать, как ORM поможет сделать код эффективным и коротким, и как мы делаем меньше кодирования и даем эффективные выход по сравнению с cakephp 3.x с использованием ORM? –

+0

Я уже делаю учебник блога, а также делаю пример небольшого веб-приложения, используя cakebook 3.x..but похоже, что некоторые функции и имена методов изменены по сравнению с cakephp2.x..это строки кода остаются такими же..so i интересно, почему мы использовали cakephp3, в то время как строка кода остается такой же, как и в старой версии. Если в cakephp3 есть какая-то полезность ORM, то дайте мне знать. –

ответ

1

Эта покрыта in some detail in the documentation (подчеркивание добавлено):

CakePHP 3.0 имеет новый ОРМ, которая была переписана с нуля . В то время как ORM, используемый в версиях 1.x и 2.x, хорошо послужил для , у него было несколько проблем, которые мы хотели исправить.

  • Frankenstein - Это рекорд или стол? В настоящее время это и то, и другое.
  • Несогласованный API - Model :: read(), например.
  • Нет объекта запроса - Запросы всегда определяются как массивы, это имеет некоторые ограничения и ограничения . Например, это делает объединения и подзапросы намного более сложными, чем .
  • Возвращает массивы - это распространенная жалоба на CakePHP, и , вероятно, уменьшил принятие на некоторых уровнях.
  • Нет объекта записи - этот делает применение методов форматирования сложным/невозможным.
  • Containable - Должно быть частью ORM, а не сумасшедшим хакерским поведением.
  • Рекурсивный - Это должно быть лучше контролироваться как определение, какие ассоциации включают , а не уровень рекурсивности.
  • DboSource - это зверь, и Модель полагается на него больше, чем на источник данных. Это разделение может быть чище и проще.
  • Подтверждение - должно быть отдельно, это гигантская сумасшедшая функция прямо сейчас. Сделав его многоразовым битом, рама станет более расширяемой.

ОРМ в CakePHP 3.0 решает эти и гораздо больше проблем. Новый ORM фокусируется на реляционных хранилищах данных прямо сейчас. В будущем и через плагины мы добавим нереляционные магазины, такие как ElasticSearch и другие.

В документации идет подробная информация об архитектуре ОРМ, стоит потратить время на чтение и поглощение.

Если вы потратили немного времени на работу с CakePHP 3.0, преимущества могут быть не очевидны, но разделение таблицы с сущностью делает обязанности классов/методов более очевидными и добавляет гибкость, которая невозможна с как ранее работал модельный слой.

Лучший способ понять преимущества нового ORM - просто использовать его, как было разработано.

+0

спасибо за ваши предложения –

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