Ответы пользователя по тегу MySQL
  • IoC в PHP, как ему лучше объяснить, какой объект инициализировать?

    Есть еще вариант сделать еще 1 интерфейс с другим именем и тогда при инициализации класса не нужно будет делать дополнительные связи. Но такой подход кажется неправильный так как придется делать полный дубль первого интерфейса со всеми его методами.

    //Допустим есть базовый интерфейс:
    interface IBaseDB{
        // здесь список методов
    }
    //Просто наследуем 2 пустых интерфейса от него:
    interface IBaseDBLogDB extends IBaseDB{}
    interface IBaseDBMasterDB extends IBaseDB{}
    //и Забиваем их в IoC:
    $IoC->Bind('IBaseDBLogDB',$log_db_connection_instance);
    $IoC->Bind('IBaseDBMasterDB',$master_db_connection_instance);

    Не вижу здесь дублирования кода, на мой взгляд вполне жизнеспособное решение.
    Ответ написан
  • Архитектура MySQL таблицы: строки или числа

    Если Вам так не нравится вариант с JOIN-ами, то попробуйте использовать 10 систему счисления (пусть немного избыточно, зато будет запас по статусам). Проверка сведется к вычислениям критериев на стороне PHP:
    $service = 3; // от 1 до 11
    $status = 2; // от 1 до 4
    $min = $status * pow(10, $service);
    $max = ($status+1) * pow(10, $service);

    И последующим запросом к MySQL:
    SELECT * FROM `test` WHERE `service` >= $min AND `service` < $max

    При этом для производительности надо бы добавить индекс по колонке service:
    ALTER TABLE `test` ADD INDEX `test` (`service`)
    P.S. возможно что-то не так с формулой $min и max, но сама идея - использовать >, < (или BETWEEN) для проверки нужного разряда.
    Ответ написан