Использование Magento API v / s обычный MySQL - PullRequest
1 голос
/ 22 марта 2012

Мне было поручено подключить форум phpbb к существующей базе данных Magento.

Как это будет работать:

  1. Новые пользователи регистрируются на magento-сайте и выбирают имя пользователя на форуме, а также имя пользователя на сайте (может совпадать). Таким образом, они могут использовать одинаковые учетные данные в обоих местах.
  2. Некоторая логика регистрации должна заполнять другие поля базы данных на основе информации о пользователе.
  3. При аутентификации существующего пользователя phpbb используется база данных Magento.

Я использовал API Magento для заполнения таблицы в 1, а простые запросы / обновления MySQL в 3. Хотя я застрял на 2.

Для 2 поля, к которым обращается phpbb, будут обновляться только форумом phpbb (ну, кроме имени пользователя на форуме), а не сайтом Magento. Использование API Magento кажется ужасно утомительным вариантом и, на мой взгляд, ненужным для моей ситуации.

Итак, должен ли я использовать Magento API или обычные вставки MySQL и почему?

Ответы [ 3 ]

1 голос
/ 22 марта 2012

Я бы предложил вам вообще использовать magento API, что означает отсутствие SQL.Чтобы использовать magento вне области действия Magento, вы можете использовать:

require_once('app/Mage.php');
Mage::app();

Более того, если я правильно понял, я бы предложил для

Some registration logic needs to populate other database fields based on the user info

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

По сути, почему я голосую за raw-sql:

  1. Скорость.Работать намного быстрее, чем модели API.
  2. Простота.Очень просто, так как вы работаете напрямую с БД.

Для Magento API:

  1. Простота.Для меня гораздо удобнее работать с API-моделями, чем с SQL-запросами.Поэтому мы вообще не пишем sql.
  2. Целостность.Вы можете что-то сломать с помощью sql, в то время как вы не очень хорошо к этому относитесь.Используя Models API, вы ничего не сломаете.Фреймворк справится со всем, покупай сам.
  3. Меньше кода.В Magento API есть много-много-много полезных методов, поэтому я думаю, что вам не нужно писать много кода, если вы используете API, а не SQL, потому что в magento есть все, что вам нужно: DB, валидация, функции форматирования и т. Д.

Так что мой голос за magento.

1 голос
/ 22 марта 2012

Выберите Magento API.Вам не только не нужно эмулировать генерацию всего хеша (они используют двухсимвольную соль и добавляют его к хешу MD5), вам также не придется беспокоиться, когда / если они решат обновить схему базы данных или механизм хеширования.

Сменить пароль пользователя довольно просто;

require_once 'app/Mage.php';

Mage::init('admin');

$customer = Mage::getModel('customer/customer')->load(123); // whatever the user ID is
$customer->changePassword('whatever_new_password');
0 голосов
/ 22 марта 2012

В alomst каждый разработчик кейсов должен использовать собственные классы Magento для выполнения функций CRUD над данными.

Использование собственных классов / методов позволяет Magento использовать встроенную обработку событий или каскадные операции над связанными объектами, например: при удалении клиента все поля customer_id Для сущностей заказа будет установлено значение NULL.

Помимо множества других причин, по которым вы должны выбрать Magento API, @Jevgeni Smirnov опубликовал некоторые из них.

...