[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Класс работы с БД
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
Aeq
Цитата (dr.nomore @ 8.11.2013 - 13:17)
Верю что в других СУБД есть нечто подобное, иначе быть не может, инае это не СУБД, а бред укуренного стрептококка.

Хреново что нет единого интерфейса под это дело. Городить свой не очень круто, т.к. запариться можно под все субд делать. Я бы может сделал под mysql и postgresql.
Еще интуиция подсказывает что раз в мускульном майисаме нет внешних ключей, то и information_schema ничего про них не скажет, даже если были определены при создании таблицы.. проверю вечером..
dr.nomore
Конечно надо признать я намеренно свел тему к концептуальному обсуждению. Каюсь.
Aeq
Цитата (dr.nomore @ 8.11.2013 - 13:50)
Цитата
$db->fruit->delete(123) можно удалить только 1 запись по id,


Вы меня смешите. Мы же в резиновом php, а не в каком-то конкретном (от слова бетон) VB, где такое тоже реализуемо.

  is(!is_array($value)) $value = (array) $value;


И далее обычная процедура разбора массива.

pk все равно один на всех. Не может быть такого чтоб в одной строке pk был Код_фрукта, в в другой Название_фрукта.

ну да, не одну, но только по id, а если мне надо удалить все фрукты с истекшим сроком годности, в своем я напишу ->where('годен_до < now()')->delete() , а в вашем варианте как? или удалить все с красным цветом у меня будет ->key('red', 'color')->delete() , а у вас?
dr.nomore
Можете не проверять. fk парсятся, но под майисамом не сохраняются. Да, их не будет. Только в инне. Ну еще там где-то, где я не проверял.

Для myisam, разумеется, приходится заводить свою, отдельную таблицу отношений.
Aeq
Цитата (dr.nomore @ 8.11.2013 - 14:00)
Конечно надо признать я намеренно свел тему к концептуальному обсуждению. Каюсь.

главное чтоб полезные выводы из такого обсуждения вывелись. я например для себя придумал чем заняться в предстоящие выходные, запилить еще один уроверь абстракции над моим APDO, который будет читать схему, для начала под mysql, дальше посмотрим.
dr.nomore
в своем я напишу ->where('годен_до < now()')->delete() 


Щито? :) Вы напишите? На каком основании?

Вы впали в глубокий уровень абстракции. Такого не бывает чтобы программист удалял сгнившие фрукты. Это делает оператор сортируя по дате он выбирает что удалить щелк - шифт-щелк, или там фильтром воспользуется, например на красные, или прямо из результата поиска выделит все и нажмет Удалить.

В режиме обслуживания может быть? Но это ж совсем другой скрипт.

Aeq
Цитата (dr.nomore @ 8.11.2013 - 14:17)
в своем я напишу ->where('годен_до < now()')->delete() 


Щито? :) Вы напишите? На каком основании?

Вы впали в глубокий уровень абстракции. Такого не бывает чтобы программист удалял сгнившие фрукты. Это делает оператор сортируя по дате он выбирает что удалить щелк - шифт-щелк, или там фильтром воспользуется, например на красные, или прямо из результата поиска выделит все и нажмет Удалить.

В режиме обслуживания может быть? Но это ж совсем другой скрипт.

в моей модели будет метод "удалить просроченные фрукты" например, который будет выполнять эту операцию например. Оператор будет тыркать кнопочку когда ему надо, которая будет вызывать этот метод например ))
Aeq
Цитата
Можете не проверять. fk парсятся, но под майисамом не сохраняются. Да, их не будет. Только в инне. Ну еще там где-то, где я не проверял.

С учетом того что довольно большой пласт пхп прогеров юзают мускул с майисамом, ваши заявления про то что класс работы с БД должен сам все узнавать из базы про связи и автоматически использовать их, принимают немного странную форму, выражаясь полит-корректно biggrin.gif

Цитата
Для myisam, разумеется, приходится заводить свою, отдельную таблицу отношений.

а это по-вашему будет не то же самое, как прописать параметры связей в модели? По-моему так один фиг где их прописать, в модели или в спец. табличке базы. Разница только в скорости будет: если из базы, то надо доп. запросом вытащить и на основе этого чего-то в объектах сохранить; если все уже прописано в моделях, то собственно оно уже прописано и никаких доп. вычислений не требуется biggrin.gif
dr.nomore
Цитата
Оператор будет тыркать кнопочку когда ему надо, которая будет вызывать этот метод например ))


Это продолжение метода отстранения от реляций. Чтобы ни одна извилина не дай бог не загнулась.

Так вот SQL, если вы вообще его видите за классами генерации SQL, изобретен для того чтобы _человек_ мог общаться с реляционной БД на человеческом языке.

А наш язык - язык программистов, бесчеловечный. Оператор может научиться строить запросы почитав мануал и напишет без нашей помощи

delete from фрукты where date between now and чо-то там еще, я не пользовался ни разу потому что сам себе делаю эти фильтры и поиск.

На языке классов никто кроме вас ничего не напишет. Вот куда скатился SQL.

---

Вы же видели консоль СУБД. Майскуля. Все в точности как в каком-нибудь cmd.exe только работа с бд, а не с файловой системой которая тоже БД.

Оно и хтмл умеет вводить и xml и, наверно, напечатать можно, не говоря о том чтобы в файл записать результат любого запроса. Там все есть, все уже давно оборудовано, а мы с вами обсуждаем работу с API и ПО на базе этого API.

Точная аналогия того же cmd.exe и скажем Проводника Виндоуз, или там FAR'а. Вот эти проводники мы и пишем. В графическом слегка виде, а на самом деле такие же убогие текстовые, потому что хтмл это текст.
Aeq
Цитата
Это продолжение метода отстранения от реляций. Чтобы ни одна извилина не дай бог не загнулась.
Так вот SQL, если вы вообще его видите за классами генерации SQL, изобретен для того чтобы _человек_ мог общаться с реляционной БД на человеческом языке.
А наш язык - язык программистов, бесчеловечный. Оператор может научиться строить запросы почитав мануал и напишет без нашей помощи
delete from фрукты where date between now and чо-то там еще, я не пользовался ни разу потому что сам себе делаю эти фильтры и поиск.

вы откуда вообще свалились? научить оператора писать на sql?? я в курсе что изначально sql задумывался быть таковым, но в результате нихрена не получилось, это во-первых. Во-вторых, когда юзер изо дня в день, из часу в час, а то и еще чаще, выполняет одну и ту же операцию, неужели вы не станете делать ему кнопочку "сделать все хорошо"?

И опять же модель - это не проекция таблички бд на код, это более высокий уровень абстракции, она может лежать на нескольких табличках, или вообще не на sql, и у модели должны быть вполне конкретные методы, такие как "удалить просроченные фрукты", которые прямого отношения к sql не имеют, и не должны. Если я пишу игру, у меня есть модель "бот", и у него методы "взорвать голову", "оторвать ногу", это блин никак с sql не связано, это логика приложения, которая уже потом как-то проецируется на бд, реляционную или не реляционную или на xml файл или еще на фиг знает что, не важно.

Цитата
На языке классов никто кроме вас ничего не напишет. Вот куда скатился SQL.

Я и не прошу юзверей писать на языке моего класса, как такое вообще могло в голову прийти??
Игорь_Vasinsky
Aeq
он на английском языке литературу читает. проявите понимание и довертесь biggrin.gif

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
dr.nomore
Возвращаясь к кешу структуру БД. Зная наперед какие у вас есть таблицы и какие в них есть поля и какие флаги у полей вам не придется уходить далеко в поисках ошибок оператора и происков врагов. Запросил оп несуществующую таблю - вы ему мгновенно "Такой страницы нет". Запросил правильную, вы ему список полей и оконце ввода - вот вам и фильтр. Сортируй по чему угодно, ограничивай чем хочешь. Оп выбрал поле типа число, а пишет текст. Поле теряет фокус вы ему алерт: Тупица, там же написано серым - "введите число"! Имеется ввиду плейсхолдер который формируется из типа поля. Не надо сервер мучить, хтмл покажет, ява-скрипт расскажет.

Это я к общему знаменателю пользования _всеми_ данными которые предоставляет база данных

Почему в Yii varchar маппируется на varchar(255)? Длина поля в символах доступна через mysqli::fetch_field(). Стало быть зафиксировав в БД что это поле не может содержать больше чем, скажем, 64 символа, вам уже не надо будет ничего проверять после ввода, потому что input будет max-length="'.($len/$bytes).'" $len это длина строки в байтах, $bytes это длина символа строки в байтах.
dr.nomore
Цитата
выполняет одну и ту же операцию, неужели вы не станете делать ему кнопочку "сделать все хорошо"?


Опять насмешили. Эта кнопочка называется CREATE VIEW AS SELECT и бла-бла-бла...

Короче нарисовал удачный SQL и в мемориз. Припоминаю в РМА есть такая фича. Я не пользовался. Но для себя писал, на десктопе. Написал и все равно не пользовался.

Приложение к БД полностью оправдано когда оно связывает БД с небедешными сущностями. Скажем коннект, файлы, потоки, и тп.

Кстати, у вас же включена хронология запросов в браузере - хистори называется. Позволяет вводить адреса с подскзкой. У меня отключена. Чтобы зайти на этот форум я набираю phpforum.ru и жму ентер.

На самом деле все очень легко когда натренировался. Мы сколько тут уже кБ написали? А есть люди которые не писать не читать не умеют. Для них снимают видео. Видео-инструкция, видео-урок, видео-фак, видео-ответ и тп.

Вот так.
dr.nomore
Если меня попросят сделать кнопку с двумя календарями чтобы удалять из данной таблицы записи, я им оторву и голову и ноги, обе. Потому что есть сортировка, есть фильтр, выбирай поле, определяй критерий, ищи, удаляй, копируй, экспорти - что угодно. Только моск своей тупкой не выноси.

Когда вы поддерживаете падение культуры, вы вредите сами себе. Чем тупее становятся приложения, тем меньше спроса на умные приложения и тем меньше получают грамотные специалисты.

Запузырить на каждую таблю по шаблону может любой дятел насмотревшийся уроков на ютубе. И нафиг ему ваш Yii. В каше все напишет и все будет работать. За копейки.

Цитата
Если я пишу игру, у меня есть модель "бот", и у него методы "взорвать голову", "оторвать ногу", это блин никак с sql не связано, это логика приложения


Тогда зачем вам БД. Пишите данные в файл. Вот так.
Aeq
Цитата
Цитата
выполняет одну и ту же операцию, неужели вы не станете делать ему кнопочку "сделать все хорошо"?

Опять насмешили. Эта кнопочка называется CREATE VIEW AS SELECT и бла-бла-бла...

речь вроде шла об операции удаления просроченных фруктов, при чем тут вьюхи?


Цитата
На самом деле все очень легко когда натренировался. Мы сколько тут уже кБ написали? А есть люди которые не писать не читать не умеют. Для них снимают видео. Видео-инструкция, видео-урок, видео-фак, видео-ответ и тп.

К сожалению мне приходится писать веб-интерфейсы именно для тех людей которые смотрят видео-инструкции, а еще иногда и для тех кто и это не умеет, поэтому приходится делать кнопочки типа "сделать все хорошо". Да и что в этом плохого собственно? это же прекрасно когда есть такие кнопочки, облегчающие жизнь сотрудникам: работа ускоряется, обороты увеличиваются, зарплата растет. Все занимаются своим делом, и не надо никого заставлять учить читать и писать, да еще и на SQL biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.