1. PHP / Говнокод #13985

    +152

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    public function getId($model=0){
        	
        	if($model->catalog_id){
    
        		return $model->catalog_id;
    
        	}else{
    
        		$L=Yii::app()->db->createCommand()
        		->select($this->tableName().'_id')
        		->from($this->tableName())
        		->order($this->tableName().'_id DESC')
        		->limit(1)
        		->queryRow();
    
        		return  ($L[$this->tableName().'_id']+1);
        	}
        }

    Контроллер админки инет магазина на Yii

    Запостил: flashbag, 21 Октября 2013

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

    • показать все, что скрытоКакой багор )))
      Ответить
    • показать все, что скрытоАФТАР ПАСТА МИНУСАМ ПА ИБАЛУ НА
      АЗАЗАЗЗАЗАЗАЗА
      Ответить
      • показать все, что скрытоКстати, нашёл ШИКАРНЫЙ СПОСОБ плюсовать или минусовать все комментарии к посту разом.

        $('.entry-comment-wrapper').each(function(i){
        var url=$(this).attr('id');
        url=url.replace('comment-', '');
        url='/ratings/comment/'+url+'/on';
        $.get(url);
        });


        ----------------------------------------


        $('.entry-comment-wrapper').each(function(i){
        var url=$(this).attr('id');
        url=url.replace('comment-', '');
        url='/ratings/comment/'+url+'/against';
        $.get(url);
        });
        Ответить
    • Блин, да чем удобнее писать все эти select()->from()->join()->where()->groupby(), вообще крайне безумно и бесполезно. Однохерственно, что текст хранить. Да и, наверняка, потом оно тупо преобразуется в текст и скармливается движку СУБД.
      Ответить
      • > крайне безумно и бесполезно
        Ну я бы не был так категоричен. У таких штук composability получше, чем у текстовых запросов (если, конечно, орм путёвый): легко добавлять джойны и дополнительные where в зависимости от каких-то условий. Ну и ->where('name = ?', $name) тоже удобней, чем $sql .= 'name = ?'; $params[] = $name; ;)

        Ну и плюс ко всему у ORM'ов бывают и другие фишки. Например кеширование (для PHP, имхо, не особо актуально), удобная работа с foreign keys и ассоциативными табличками ($user->groups против джвух рукописных джойнов) и т.п.
        Ответить
        • показать все, что скрытоДа быдло ты, быдло, успокойся )))
          Ответить
          • Ты как с кэпом разговариваешь, гондон?
            Я думал, ты что-то из себя представляешь, но оказывается ты - полный отстой. Буду хардкорно минусовать.
            Ответить
            • Он не кэп, он петух обосанный как и ты. Поначалу сам засирал этот гамносайт, а теперь подсасываешь олд фаготам
              Ответить
              • Какой багор )))
                Ответить
              • неужели это вернулся пидорок орлежка, которому в жоппу напихали хуёв всем сайтом, да так, что её порвало и никто до сих пор зашить не может?
                Ответить
              • Было, не отрицаю. Но я очень скоро понял, как бессмысленно флудить и выебываться на этом сайте - это равносильно тому, как если бы ты мочился против ветра. Тут совершенно иная аудитория, чем в этих ваших форумах.
                p/s/
                Постить пустые экраны, гоатсе, односложные фразы типа "отсосу кавказцу" и тп - это ты считаешь достойным пацана? Тогда ты сам петух.
                Ответить
            • Какой багор )))
              Ответить
        • Это если существует возможность составлять запрос в произвольном порядке, добавлять джойны по мере надобности, после where и всего такого.
          Обычный запрос закэшируется не хуже. Всё равно придётся делать синтаксический разбор.
          bind_param отработает аналогично, один в один.
          Какой-то псевдоязык из птичьих, честное слово.
          Ответить
          • > Это если существует возможность составлять запрос в произвольном порядке, добавлять джойны по мере надобности, после where и всего такого.
            Ну если запрос составляется на последнем этапе, то почему нет?

            > Обычный запрос закэшируется не хуже
            Не запросов. Результатов.

            > bind_param отработает аналогично, один в один.
            Писать больше.

            > Какой-то псевдоязык из птичьих, честное слово.
            За запись в духе user.groups (many-to-many отношение) и file.owner (many-to-one) той же SQLAlchemy, имхо, можно продать душу дьяволу и смириться с птичьим языком. Главное вспомнить, сколько нужно написать для работы с many-to-many на голом SQL :)
            Ответить
            • Может ты и прав, а я просто старый брюзга. Я просто вспоминаю самые примитивные запросы на своей прошлой работе, по двадцать-тридцать джойнов и с полсотни колонок. В таком представлении они бы выглядели шикарно.
              Ответить
              • Ты не один такой, мне тоже большие запросы проще читать "голыми". Но мелочи, для которых обычно РНР и пользуют - действительно удобнее на ORM. В общем как всегда - инструменты не делятся на тру и отстой, просто для каждого своё применение.
                Ответить
              • > самые примитивные по двадцать-тридцать джойнов и с полсотни колонок
                это печально

                > @bormand: сколько нужно написать для many-to-many
                и сколько?
                u.id = ug.user_id and ug.group_id = g.id
                либо
                users u 
                   join user_groups ug on (u.id = ug.user_id)
                   join groups g on (g.id = ug.group_id)

                зы. видел я выхлоп того, что в итоге генерит, например, hibernate
                там тоже можно аннотациями расставить many-to-many, many-to-one
                не очень оптимально
                Ответить
                • А теперь добавляем создание и удаление ассоциаций...

                  > не очень оптимально
                  А тут спорить не буду. Но для примитивных задач типа "отредактировать группы юзера" орм вполне удобен. А в таких задачах производительность не особо важна.
                  Ответить
                  • да орм как раз удобен чуть реже чем всегда
                    но вовсе не из-за того, что на sql стираются пальцы в кровищщу
                    Ответить
                • кстати, если переименовать поля суррогатных ключей в groups.group_id и users.user_id, то можно так
                  select ...
                  from users u
                  join uses_groups ug using (user_id)
                  join groups g using (group_id)
                  Ответить
            • Существует мнение, что смешивать в одном исходном файле несколько языков программирования - дурной тон. Это заставляет читателя кода лишний раз переключать контекст и мешает валидации кода.
              Я за подход с конструкторами запросов (встроенных мини-дсл).
              Во-первых, это позволяет подключить компилятор к валидации запросов, выявляя некоторые ошибки до запуска программы.
              Во-вторых, упрощает анализ кода. Не нужно думать, все ли скобочки и запятые расставлены правильно после конкатенации частей запроса.
              Но я против ORM.
              Ответить
              • > Но я против ORM.
                Почему?
                Ответить
                • Слишком текущая абстракция.
                  Explicit is better than implicit.
                  Я как-то половину новогодних праздников искал ошибку в коде, вызванную тем, что люди плохо представляют себе, что именно ORM делает за них.
                  Слишком неочевидны границы транзакций и кол-во обращений к базе.
                  Ну и на проблемы с производительностью наталкивались серьёзные. Которые вообще непонятно, как чинить.

                  Сейчас приходится работать с крупным java-проектом (750.000 loc), в котором не используется ORM. Какое счастье, что его там нет, иначе в сорцах было бы вообще не разобраться, особенно с учётом обилия датасорсов.
                  Ответить
                  • > Слишком неочевидны границы транзакций
                    В той же алхимии вполне очевидны.

                    > кол-во обращений к базе
                    > Ну и на проблемы с производительностью наталкивались серьёзные
                    А тут согласен.
                    Ответить
    • Какой багор )))
      Ответить
    • Дайте уже, наконец, модераторские права Тарасу, борманду, Роману и нескольким другим адекватным старожилам. Чтобы они быстро выпиливали идиотов.
      Ответить

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