• Стоит ли разработчикам платить за баги?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Не платите. Тогда все разработчики просто уйдут туда, где платят. А вы останетесь изучать теорию, объясняющую почему и как появляются баги, пока не осознаете их неизбежность.
    Ответ написан
    1 комментарий
  • Class 'Bitrix\Sale\Basket' not found (если подключать плолог, а если подключать header.php работает).Как подключить?

    nikolaevevge
    @nikolaevevge Автор вопроса
    Разобрался!

    После use забыл написать:

    Bitrix\Main\Loader::includeModule("sale");
    Bitrix\Main\Loader::includeModule("catalog");
    Ответ написан
    Комментировать
  • Проблема с объединением нескольких таблиц MySQL?

    @Akela_wolf
    Extreme Programmer
    Во-первых, стрелки на диаграмме принято рисовать в другую сторону - это таблица связи ссылается на таблицу продуктов и на таблицу фотографий.
    Во-вторых, то чего вы хотите, сделать можно но это неправильный путь. Правильных путей тут два:
    1. Построить запрос, который выбирает продукты по определенному условию и присоединяет к ним картинки. В этом случае у вас будет несколько записей на один продукт, отличающихся только картинками (это, я так понимаю, вы сумели сделать). Обрабатывать это не очень удобно, но зато один запрос в БД.
    2. Выбрать сначала продукты, а затем к продуктам выбрать фотографии. Потребуется сопоставить фотографии с продуктами (по ID) на уровне приложения. Зато два запроса в БД и каждый возвращает свой набор требуемых данных.


    Третий правильный путь - использовать ORM, которая возьмет на себя извлечение данных из БД.

    Неправильный (на мой взгляд) путь - использовать агрегирующие функции, как-то так:
    SELECT p.*, JSON_ARRAYAGG(f.filename) AS files FROM product p
    LEFT JOIN product2file p2f ON p2f.product_id=p.id
    LEFT JOIN file f ON p2f.file_id=f.id
    GROUP BY p.id;

    Пример

    Но я считаю этот путь неправильным, потому что: с ростом сложности БД сложность подобных запросов быстро растет и тут начинают вылазить ошибки. А еще потому что вытащить из подчиненной таблицы 2 колонки можно, но порядок элементов в функции JSON_ARRAYAGG не определен, поэтому начинается возня с тем чтобы все это сопоставить. GROUP_CONCAT тоже имеет проблемы (в первую очередь ограничение длины).

    Так что, мне кажется, лучше привыкать к тому что запрос может возвращать несколько строк для одной сущности и учиться с этим работать на уровне приложения, чем извращаться в запросе.
    Ответ написан
    Комментировать
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    ТС, надеюсь никому никогда не придется работать с тобой в команде и поддерживать твой код. Одно дело не знать, спрашивать и прислушиваться, другое дело гнуть свою кривую линию.
    Ответ написан
    4 комментария