Boris Korobkov, Главное, что нужно знать про «Хабр» — это целое семейство продуктов для айтишников. Мы любим IT и людей, которые делают эту сферу такой интересной, хотим помогать им учиться, работать, общаться и отдыхать. Наша цель — создать комфортную экосистему для сообщества разработчиков, инженеров, дизайнеров, менеджеров — всех, кто создаёт IT-продукты.
заметно ))
п.с. там ошибки есть. и потому вопрос задал: как правильно оформить их отлов и обработку.
Boris Korobkov, вверху этой страницы. в вопросе.
получается что надо try-catchить там где происходит выборка из БД. и тогда ответ всегда будет ожидаемый серверу который сделал запрос?
а там где делаем запрос на получение данных, отлов только сетевых ошибок, что избавит от двух блоков catch те что в коде приведены. или не прав?
FanatPHP, заметь а по сути то ничего ! я тебе даже разжевал, не поленился ,а тебе это не надо было.
какая смесь, какое попрошайничество , наскоки .... )) не брезгливый ..
если передергивает то закаляйся, станешь крепче.
FanatPHP, хорошо.
1. Зря ты кипятишься. -- результат твоего намерения - Я иногда конечно ради красного словца могу написать обидно вполне ожидаемый эффект.
2.То что ты совершенно не умеешь вопросы задавать - это факт. -- описан поэтапно механизм работы процесса. Если не понятно, как же ты можешь давать ответ на вопрос который тебе не понятен? уточни , собери данные достаточные для ответа. или же просто можно сказать: не достаточно логично поставлен вопрос.
по вопросу:
работает код:
запрос с помощью газла( это видно ?)
- привожу пример (меняю в коде на сервере куда приходит запрос , т.е. делаю умышленно ошибку (устанавливаю несуществующее поле это тоже не понятно? ),
соответственно какая может быть ошибка в таком случае SQL ERROR конечно же не найдено поле в таблице!
- в результате на сервер с которого был запрос прилетит Интернал Сервер 500 - и с помощью catch(\GuzzleHttp\Exception\RequestException $e) она ловится, а вот блок catch(\Exception $ex) не ловит ее!
далее описал другую ситуацию для создания ошибки превышения интервала ожидания ..... так что же не понятно??
вот и задал вопрос , исходя из полученных данных, что не понял - а сколько же их таких ошибок?
понимаю что скорее всего неправильно что то делаю , ведь таких блоков не должно быть много ?
как то должен механизм обрабатывать это не такой реализацией.
создается впечатление что тебя принуждают давать ответ. Если ты не имеешь желание на мои вопросы давать ответ , так не надо это делать.
Ты хотя бы разберись с вопросом а не под себя его редактируй.
Если бы я знал , то не спрашивал здесь. Да я новичок, и многих вопросов не понимаю.
Для чего ты пишешь что: --- отлавливать трай кетчем ?? у меня в коде что то другое ты увидел?
я привел код отлова и ошибку, а не бубнел, бубнишь ты по факту, что этот код не ловит превышение ожидания.
я знаю что фреймворк достаточно умен. Но вероятно я ошибаюсь при формировании запроса или при настройке потому и не могу добиться результата.
пример того как человек помог разобраться: его слова: покажи заголовки какие установлены при запросе и все ответ нашелся с таймаутом.
без лишней лирики и подобного.
ты умен молодец! умеешь тоже хорошо! я пока что не обладаю знаниями.
Илья Чубаров, да, но это оказалось странная причина )) , дело в окружении. Спасибо одному человеку который нашел решение и подсказал мне как устранить. Пришлось менять в конфиге на сайте№2 настройки, странность в том почему так ларавель себя повел в этой ситуации, или возможно опенсервер "намусорил" . Но ошибка конечно мудрая какая то )).
трудно привыкнуть, что все время, казалось бы, делаешь уже не в первый раз , а находится что либо что снова начинаешь искать искать и офигевать.
если изменить БД в сайте 1 в .env на БД сайта 2 все ок
т.е. если меняю в файле .env сайта 1 параметр имени БД на имя БД сайта 2 то все работает. Но это же не то.
Получается: прилетает с сайта 1 данные на сайт2 берут код который на сайте 2 и запрос происходит в БД сайта 1. Почему?
а так же если делаю тестовый роут на сайте 2 чтобы запрос был только с сайта 2-- запрос выполняется.
FanatPHP, не за количество методов спрашиваю.
у меня в методах не один запрос, все зависит от аргументов и других условий.
но от того что метод раздуть количеством запросом сути не поменяет ....
Во-вторых, с какого перепугу у тебя должен меняться метод make model при добавлении условия?
Если добавляется новый параметр отображения то да,
....)
реализовал по такой же схеме как ты и описываешь, но в процессе написания возник этот вопрос, тот что задал , почему то думается что это не оптимальный путь.
но тебе все равно спасибо за ответы и твое время.
FanatPHP, та что же такое))) снова пришли к тому же
репозиторий:
метод А - достает: общее количество утюгов
метод Б - достает: сумму проданных утюгов за период и только красные
метод С - достает: количество возвратов утюгов которые стоят Х денег за прошлую неделю
метод n- достает: ..... ну и т.п.
метод makeModel -объединяет все требуемые данные и отдает ...
теперь возникла необходимость получить новую выборку по новому условию, и те методы которые уже существуют не могут дать требуемый результат.
Значит необходим новый метод!
-открываем код находим этот класс репозитория и добавляем в него новый метод, соответственно лезем дальше в метод где происходит создание модели и туда то же добавляем то что требуется чтобы там оказалось новое значение. ок?
послезавтра отпала необходимость в каком нибудь запросе.
-снова открываем класс и убираем ненужный метод. и снова же лезем в другой метод чтобы и там сделать корректировку с учетом удаления ненужного значения.
т.е. такой алгоритм верный? или я неправильно понял тебя?
FanatPHP, и попутно вопрос: как лучше реализовать сбор данных с различных репозиториев.
к примеру репозиторий по продажам достал А, репозиторий по товарам достал Б.
их надо объединить в одну модель и отдать контроллеру.
FanatPHP, Разумеется для одной "таблицы"
для таблицы которая в БД ?
может использоваться несколько репозиториев - репозиторий по товарам, репозиторий по продажам.
ааа вот оно как. значит так можно делать. итог вопроса:
т.е. для построения различных таблиц(видов) для клиента в браузере , из одной таблицы которая находится в БД с данными, можно делать много репозиториев чтобы доставать различные данные в зависимости от условий?
FanatPHP, работа с одной таблицей. возможно ли на одну таблицу делать много репозиториев? просто данные различные в зависимости от условий. к примеру:
таблица только для утюгов и больше ничего не будет кроме утюгов. ))
id | number_утюг | color | price | продано шт.| непродано шт | возвращено шт| дата продажи| дата возврата|
и для построения таблиц ,уже для клиента в браузере ,различных требуется разные данные в зависимости от условий.
общее количество утюгов
общее количество утюгов красных
общее количество утюгов желтых
общая сумма проданных без возврата
количество проданых
кол-во возврата
сумма проданных
сумма проданных за период
ну т.п.
FanatPHP, какая разница, какой файл "руками править"?
По мне так что в лоб, что по лбу - менять файл "репозитория" или "файл с запросами".
за это и спрашиваю ). таким образом реализация считается верной оптимальной? Потому что много информации при обучении подают что изменения кода таким образом нарушает принципы солида и подобного. или я не правильно понимаю эти принципы.
В методе контроллера, который отвечает за рисование таблицы1, обращаешься к тем репозиториям, которые содержат нужные методы, и собираешь нужную информацию.
так и реализовал. но терзают сомнения когда возникает необходимость в новых задачах, изменяя класс репозитория.
FanatPHP, Ты спрашиваешь, надо ли писать SQL запрос, который получает нужные тебе данные?
спрашиваю - где надо писать запрос , в каком месте.
подробно:
в контроллере: $a = new NameRepository;
$a->getData('table1');
в NameRepository:
public function getData($arg)
{
// делает запрос в БД "SELECT count({$arg}) FROM table_name;" и отдает результат
}
понадобилась другая информация(другая переменная) с другим условием . Что делать? руками в NameRepository дописываем новый метод или же модифицируем getData в зависимости от того что требуется получить? и так каждый раз при появлении новых задач?
-Что такое "независимость работы
т.е. код работает независимо от того сколько требуется получать переменных что одна что 100500 т.е. при добавлении новой переменной РУКАМИ вписываем только в файл где хранятся переменные (ее название и т.п.) и в файл где лежат запросы добавляем новый запрос чтобы достать эту новую переменную. а сам репозиторий не трогаем , его код универсально работает : что то получает и отправляет в запросы получая ответ.
Главное, что нужно знать про «Хабр» — это целое семейство продуктов для айтишников. Мы любим IT и людей, которые делают эту сферу такой интересной, хотим помогать им учиться, работать, общаться и отдыхать. Наша цель — создать комфортную экосистему для сообщества разработчиков, инженеров, дизайнеров, менеджеров — всех, кто создаёт IT-продукты.
заметно ))
п.с. там ошибки есть. и потому вопрос задал: как правильно оформить их отлов и обработку.