Чистый способ реализовать нетерпеливую загрузку в стиле Active Record ORM? - PullRequest
4 голосов
/ 25 марта 2011

Я нахожусь в процессе написания очень легкой реализации ActiveRecord на PHP. У меня есть основы работы, но я хочу реализовать нетерпеливую загрузку, по крайней мере, отношений один-к-одному. Я мозговой штурм на чистый способ сделать это.

Если мне не терпится загрузить однозначное отношение, мне нужно будет знать столбцы для обеих таблиц, и мне нужно будет наложить псевдонимы столбцов в соответствии с некоторым соглашением, которое позволит мне отобразить результаты обратно в правильные объекты.

Я ищу предложения о том, как создать псевдоним столбцов в каждой таблице, чтобы сопоставление их с соответствующими объектами было максимально безболезненным.

Вначале я хотел создать псевдоним столбцов базовой таблицы как «base_column_name» и столбцов связанных таблиц как «user_email» (если «Пользователь» - это имя связанного объекта). Есть ли лучший способ сделать это, что я пропускаю?

Второй вариант, который я рассмотрел, состоит в том, чтобы убрать все объекты из базовой таблицы, а затем собрать связанные объекты в одно «ГДЕ ВХОД», используя ключи из базовой таблицы. Но не вызовет ли это проблем с производительностью?

1 Ответ

0 голосов
/ 01 апреля 2011

CakePHP использует гибкие ассоциативные массивы php в своей реализации ActiveRecord. Таким образом, отношение один ко многим может быть

array('Tablename'=>array('columnname'=>'columnvalue'), 
      'AssociatedTable'=>array('0', 
             array('columnname'=>'columnvalue')));

Он помещает еще один слой во все, поэтому вам нужно сделать $ data ['tablename'] ['columnname'];

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