"PHP" / Говнокод #7337 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
$select = $db->select()
->from('advertisement AS a', $columns)
->joinLeft('resid_apt_secondary AS ras', 'ras.resid_apartment_residental_advertisement_id=a.id', array())
->joinLeft('resid_apt_newly_unready AS ranu', 'ranu.resid_apartment_residental_advertisement_id=a.id', array())
->joinLeft('resid_apt_newly_ready AS ranr', 'ranr.resid_apartment_residental_advertisement_id=a.id', array())
->joinLeft('resid_house_house AS rh', 'rh.resid_house_residental_advertisement_id=a.id', array())
->joinLeft('resid_house_cottage AS rc', 'rc.resid_house_residental_advertisement_id=a.id', array())
->joinLeft('resid_house_dacha AS rd', 'rd.resid_house_residental_advertisement_id=a.id', array())
->joinLeft('resid_garage AS rg', 'rg.residental_advertisement_id=a.id', array())
->joinLeft('sec_residental AS sr', 'sr.section_advertisement_id=a.id', array())
->joinLeft('bld_prod_common AS bpc', 'bpc.bld_production_commercial_advertisement_id=a.id', array())
->joinLeft('bld_prod_food AS bpf', 'bpf.bld_production_commercial_advertisement_id=a.id', array())
->joinLeft('bld_prod_restaurant AS bpr', 'bpr.bld_production_commercial_advertisement_id=a.id', array())
->joinLeft('bld_prod_warehouse AS bpw', 'bpw.bld_production_commercial_advertisement_id=a.id', array())
->joinLeft('bld_prod_garage AS bpg', 'bpg.bld_production_commercial_advertisement_id=a.id', array())
->joinLeft('bld_prod_service_station AS bpss', 'bpss.bld_production_commercial_advertisement_id=a.id', array())
->joinLeft('bld_prod_other AS bpo', 'bpo.bld_production_commercial_advertisement_id=a.id', array())
->joinLeft('bld_office_any AS boa', 'boa.bld_office_commercial_advertisement_id=a.id', array())
->joinLeft('bld_office_admin AS boad', 'boad.bld_office_commercial_advertisement_id=a.id', array())
->joinLeft('bld_office_sales AS bos', 'bos.bld_office_commercial_advertisement_id=a.id', array())
->joinLeft('bld_office_kiosk AS bok', 'bok.bld_office_commercial_advertisement_id=a.id', array())
->joinLeft('bld_farm_cowshed AS bfc', 'bfc.bld_farm_commercial_advertisement_id=a.id', array())
->joinLeft('bld_farm_workshop AS bfw', 'bfw.bld_farm_commercial_advertisement_id=a.id', array())
->joinLeft('bld_farm_chicken_house AS bfch', 'bfch.bld_farm_commercial_advertisement_id=a.id', array())
->joinLeft('bld_farm_other AS bfo', 'bfo.bld_farm_commercial_advertisement_id=a.id', array())
->joinLeft('gas_station AS gs', 'gs.commercial_advertisement_id=a.id', array())
->joinLeft('rm_prod_common AS rpc', 'rpc.room_production_commercial_advertisement_id=a.id', array())
->joinLeft('rm_prod_food AS rpf', 'rpf.room_production_commercial_advertisement_id=a.id', array())
->joinLeft('rm_prod_restaurant AS rpr', 'rpr.room_production_commercial_advertisement_id=a.id', array())
->joinLeft('rm_prod_warehouse AS rpw', 'rpw.room_production_commercial_advertisement_id=a.id', array())
->joinLeft('rm_prod_garage AS rpg', 'rpg.room_production_commercial_advertisement_id=a.id', array())
->joinLeft('rm_prod_service_station AS rpss', 'rpss.room_production_commercial_advertisement_id=a.id', array())
->joinLeft('rm_prod_other AS rpo', 'rpo.room_production_commercial_advertisement_id=a.id', array())
->joinLeft('rm_office_any AS roa', 'roa.rm_office_commercial_advertisement_id=a.id', array())
->joinLeft('rm_office_sales AS ros', 'ros.rm_office_commercial_advertisement_id=a.id', array())
->joinLeft('rm_office_off AS roo', 'roo.rm_office_commercial_advertisement_id=a.id', array())
->joinLeft('rm_office_admin AS road', 'road.rm_office_commercial_advertisement_id=a.id', array())
->joinLeft('rm_office_hall_rental AS roh', 'roh.rm_office_commercial_advertisement_id=a.id', array())
->where('is_recycled = ?', 'no')
->where('is_published = ?', 'yes')
->group(array('a.type', 'a.in_archive'));

Переделываем проект. В старой версии нашел следующие строчки.

Запостил: nkarakin nkarakin, (Updated )

Комментарии (37) RSS

  • Вполне мило, если база оракул, то и не такое увидеть можно ... весьма извращенный метод конечно, но сойдет, читабельно, с мануалом еще будет и понятно.
    Ответить
      • П*зда вашему мускулю с таким количеством join-ов. Никакие индексы не спасут.
        Ответить
        • Если запрос не исполняется в цикле, то всё ок. Джойн же всего лишь по одному полю.
          Ответить
          • Учителю информатики 5-го класса расскажешь, что всё окей 😉
            Ответить
                  • это не Немо, а немоден, чувак типо немодный, первая же ссылка в гугле введёт на его твиттер
                    Ответить
                    • Вроде того :)) И я не возвращался, а только прибыл. Веселить нечем - кругом одно говно 🙁 Могу анекдот рассказать если хочешь. Но он не смешной 🙁
                      Ответить
                      • Одно радует что ты не Немо, это же и печалит. Анеков не надо.
                        Ответить
  • ох уж этот сраный котеровский враппер
    результирующий запрос был бы годным говнокодом в разделе SQL
    Ответить
      • об обезьянах, которые cannot into SQL
        поэтому наворотили какое жуткое уродство
        ни хера же не структурированное говно получилось
        Ответить
          • Проблема не столько в PHP-коде, сколько в структуре базы данных.
            PHP-код здесь на троечку, но это легко исправляется (надо только вынести все конструкции "AS tbl_alias", они не там должны быть).

            ps. Благодаря этому конструктору SQL-запросов (он из ZF), у меня проект легко и непринужденно переключается с SQLite на Oracle. И не только переключается, но и работает 🙂
            Ответить
            • > конструктору SQL-запросов (он из ZF)
              каюсь, попутал быдлокодеров

              ценность такой масштабируемости вызывает сомнения
              Ответить
  • Впервые вижу такую жуткую структуру.

    Интересно, чем отличается
    leftJoin("ABC abc_ on abc_. [...]")
    от
    . "left join ABC abc_ on abc_.[...]" . "left join [...]"

    Видимо, чертовски переусложнённая система.
    Ответить
      • Интересно, для каких это зверушек сделано. И, главное, зачем ты построил плотину из leftJoin'овпошто такое усложнение, если оно ровным счётом ничего не даёт? Я понимаю, если бы динамически потом что-то с этим делать, но оно же, судя по коду, сразу кверится.
        Ответить
        • query builder? дешевый слой абстракции над бд. Один проггер написал запрос с одним жойном, а поддерживать дали быдлокодеру - тот недолго думая раскопипастил
          Ответить
  • Вспомнилось: Детская болезнь «левизны» в коммунизме — труд Владимира Ленина, содержащий резкую критику противников большевизма. Взгляды большинства этих противников можно определить как левый коммунизм.
    Ответить
  • структура базы может со временем разрастись настолько, что перепроектирование будет стоить намного дороже поддержки.
    а тут кроме того, что человек не знает параметров Zend_Db_Select, нет ничего особенно говнокодистого.
    хотя, возможно, это именно тот случай, когда несколько запросов выполняются быстрее, чем один
    Ответить
    • ну в этом случае, как мне кажется, ошибка была еще на уровне проектирования БД.
      Ответить
  • Я как человек далекий от баз данных и PHP / Zend все-таки спрошу - а был ли смысл создавать столько пустых массивов? Почему нельзя было использовать один и тот же, а еще лучше - перегрузить функцию формирующую запрос, чтобы не передавать в нее параметр, по всей видимости, не нужный.
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8