- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 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);
}
}
Horse2 21.10.2013 15:39 # −16
PragramistOtBoga 21.10.2013 15:59 # −13
PragramistOtBoga 21.10.2013 16:06 # −13
АЗАЗАЗЗАЗАЗАЗА
Horse2 21.10.2013 16:10 # −8
----------------------------------------
bormand 21.10.2013 16:14 # +5
Вот расчехлят все юзерскрипт, который не показывает комменты людей из указанного списка (например ['Horse2']), и убирает оценки (где-то тут такой уже проскакивал)... И тебя просто не станет ;)
anonimb84a2f6fd141 21.10.2013 16:16 # −61
3Doomer 22.10.2013 07:20 # +2
Horse2 22.10.2013 09:39 # −3
eth0 21.10.2013 17:49 # 0
bormand 21.10.2013 18:28 # +4
Ну я бы не был так категоричен. У таких штук composability получше, чем у текстовых запросов (если, конечно, орм путёвый): легко добавлять джойны и дополнительные where в зависимости от каких-то условий. Ну и ->where('name = ?', $name) тоже удобней, чем $sql .= 'name = ?'; $params[] = $name; ;)
Ну и плюс ко всему у ORM'ов бывают и другие фишки. Например кеширование (для PHP, имхо, не особо актуально), удобная работа с foreign keys и ассоциативными табличками ($user->groups против джвух рукописных джойнов) и т.п.
Horse2 21.10.2013 18:38 # −41
Stertor 21.10.2013 20:35 # 0
Я думал, ты что-то из себя представляешь, но оказывается ты - полный отстой. Буду хардкорно минусовать.
anonimb84a2f6fd141 21.10.2013 20:55 # −3
bormand 21.10.2013 20:56 # +5
Horse2 22.10.2013 09:39 # −4
TarasB 21.10.2013 20:57 # +3
Stertor 22.10.2013 16:24 # 0
Stertor 22.10.2013 16:26 # 0
p/s/
Постить пустые экраны, гоатсе, односложные фразы типа "отсосу кавказцу" и тп - это ты считаешь достойным пацана? Тогда ты сам петух.
Horse2 22.10.2013 09:39 # −2
eth0 21.10.2013 18:51 # +1
Обычный запрос закэшируется не хуже. Всё равно придётся делать синтаксический разбор.
bind_param отработает аналогично, один в один.
Какой-то псевдоязык из птичьих, честное слово.
bormand 21.10.2013 19:46 # +1
Ну если запрос составляется на последнем этапе, то почему нет?
> Обычный запрос закэшируется не хуже
Не запросов. Результатов.
> bind_param отработает аналогично, один в один.
Писать больше.
> Какой-то псевдоязык из птичьих, честное слово.
За запись в духе user.groups (many-to-many отношение) и file.owner (many-to-one) той же SQLAlchemy, имхо, можно продать душу дьяволу и смириться с птичьим языком. Главное вспомнить, сколько нужно написать для работы с many-to-many на голом SQL :)
eth0 21.10.2013 20:34 # +1
Lowezar 22.10.2013 01:37 # +1
defecate-plusplus 22.10.2013 09:31 # +2
это печально
> @bormand: сколько нужно написать для many-to-many
и сколько? либо
зы. видел я выхлоп того, что в итоге генерит, например, hibernate
там тоже можно аннотациями расставить many-to-many, many-to-one
не очень оптимально
bormand 22.10.2013 09:36 # +1
> не очень оптимально
А тут спорить не буду. Но для примитивных задач типа "отредактировать группы юзера" орм вполне удобен. А в таких задачах производительность не особо важна.
defecate-plusplus 22.10.2013 09:47 # +1
но вовсе не из-за того, что на sql стираются пальцы в кровищщу
roman-kashitsyn 22.10.2013 10:32 # +1
defecate-plusplus 22.10.2013 10:38 # +2
это дорога в ад
bormand 22.10.2013 11:18 # +1
roman-kashitsyn 22.10.2013 08:58 # +3
Я за подход с конструкторами запросов (встроенных мини-дсл).
Во-первых, это позволяет подключить компилятор к валидации запросов, выявляя некоторые ошибки до запуска программы.
Во-вторых, упрощает анализ кода. Не нужно думать, все ли скобочки и запятые расставлены правильно после конкатенации частей запроса.
Но я против ORM.
bormand 22.10.2013 09:40 # 0
Почему?
roman-kashitsyn 22.10.2013 10:04 # 0
Explicit is better than implicit.
Я как-то половину новогодних праздников искал ошибку в коде, вызванную тем, что люди плохо представляют себе, что именно ORM делает за них.
Слишком неочевидны границы транзакций и кол-во обращений к базе.
Ну и на проблемы с производительностью наталкивались серьёзные. Которые вообще непонятно, как чинить.
Сейчас приходится работать с крупным java-проектом (750.000 loc), в котором не используется ORM. Какое счастье, что его там нет, иначе в сорцах было бы вообще не разобраться, особенно с учётом обилия датасорсов.
bormand 22.10.2013 10:09 # 0
В той же алхимии вполне очевидны.
> кол-во обращений к базе
> Ну и на проблемы с производительностью наталкивались серьёзные
А тут согласен.
anonimb84a2f6fd141 21.10.2013 20:58 # −2
guest 22.10.2013 05:25 # +2
bormand 22.10.2013 09:39 # +1
Horse2 22.10.2013 09:40 # −4
Vasiliy 22.10.2013 09:46 # −2
Stertor 22.10.2013 12:34 # 0
TarasB 22.10.2013 09:57 # +7
Значит мой хитрый план работает.
Обосрать самого себя, раскачать ситуацию, чтобы народ сам отказался от демократии и захотел Империю
eth0 22.10.2013 19:43 # +1
guest 22.10.2013 20:16 # −10