Oleg
Хм....
Bilbo Baggins
синьоры простая задача, ввела в заблуждение Кто шарит в mysql - подскажите плиз. user_id | user_info 1 | mail@mail.ru 1 | +79991234567 2 | test@test.ru 2 | +71236669988 Есть запрос на удаление delete form table where user_info='mail@mail.ru' Как удалить все контакты этого юзера? InnoDB. Внешний ключ каскадный на одну и ту же таблицу не получается сделать. Разносить в разные таблицы тоже не вариант
Bilbo Baggins
в два запроса (или вложенным селектом) с получением user_id не предлагать.
Pathologic
а чем тебе два запроса плохо?
Dmytro
в два запроса (или вложенным селектом) с получением user_id не предлагать.
А в чем проблема то get a потом удалить ? Зачем усложнять то ?
Volodymyr
тебе нужно хитро сделать подзапрос и получить ид юзера по мейлу
Bilbo Baggins
ну зачем, когда можно эту работу отдать mysql (если возможно)?
Pathologic
как это user_id может быть NULL
Dmytro
Чем проще и понятней код тем лучше + это редкие операции которые не дают нагрузку
Dmytro
как это user_id может быть NULL
Если ошибки в коде)
Bilbo Baggins
как это user_id может быть NULL
может быть контакт без юзера
Pathologic
не может
Pathologic
ну или база неправильно сделана
Dmytro
Ок как получить контакты 2 разных людей у которых нет юзерайди
Bilbo Baggins
не может
я утрирую для понимания, на самом деле все сложнее. Например: есть таблица юзеров и т.д. Есть форма обратной связи Все запросы из ФОС попадают в эту таблицу. При записи ищем id юзера, но этот запрос может быть и не от юзера.
Bilbo Baggins
ну или база неправильно сделана
это факт. Постепенно всё рефакторю, но система сложная и сразу всё не получится. Тем более продакшн.
Pathologic
в этой таблице должен быть еще столбец id формы
Pathologic
удаление контактов происходить должно по идее при удалении пользователя
Bilbo Baggins
Pathologic
тогда нужна еще одна таблица пользователь - email
Pathologic
тогда сможешь настроить ключи
Pathologic
и все будет само удаляться
Bilbo Baggins
ок, дополню: Есть ФОС. Все обращения обрабатываются менеджером каким-нибудь. Когда обращение обработано - удаляется из этой таблицы. В списке пользователей нужно видеть, что от этого юзера есть необработанное сообщение. Изменять (дополнять) таблицу пользователей нельзя (она на другом сервере и т.д.)
Bilbo Baggins
т.е. в списке пользователей лезу в табличку table и смотрю есть ли там запись с одним из контактов юзера. Если есть - подсвечиваю.
Игорь
Добрый день, я уже писал на гитхабе по-поводу .htaccess (https://github.com/evolution-cms/evolution/issues/1868), в общем на Апаче 2.4 конструкция: ———————- order deny,allow deny from all ———————- уже не работает, а правильно будет на Апаче 2.4: ———————- Require all granted ———————- Получается сейчас при обновлении, затирается и phpthumb и снова отвалились все картинки и кэш)
Bilbo Baggins
при обработке обращения, удаляю из table всё по юзеру И в списке юзеров он уже не будет подсвечен
Bilbo Baggins
короче в два запроса и без вариантов?
Pathologic
или два запроса или еще одна таблица с email
Pathologic
лучше два запроса ((:
Bilbo Baggins
ok, спасибо
Dmytro
короче в два запроса и без вариантов?
100% . Получаем id по емейлу. Удаляем все что с этим user_id
Pathologic
но с двумя запросами дело такое, что если у тебя id=null то ты удалишь все такие записи
Bilbo Baggins
если null - то удалять только запрошенную строку
Pathologic
тогда запись с телефоном не удалится ((:
Dmytro
тогда система придумана гавняже и ее надо переделывать
Dmytro
либо автоматом регить пользователя, тобы у него был айди
Dmytro
либо вместо айди ставить timestamp
Bilbo Baggins
эта система - учёт входящих обращений (звонки, смс, почта и т.д.) Звонки могут быть не от клиентов.
Dmytro
либо вместо айди ставить timestamp
либо рендерить кастомный айди, но без айди - никуда. Если позвонит 1 не клиент, а потом второй неклиент - в базе будут 2(или 4) записи без айди - они вообще никак не связаны, просто записи - кароче это какаха. Переделывать надо в любом случае
Serguei
в два запроса (или вложенным селектом) с получением user_id не предлагать.
Left join таблицы самой с собой можно попробовать. Если прокатит ,то тогда удаление как вот здесь было сделано можно попробовать: https://github.com/evolution-cms/evolution/blob/11411902d25b2e2aacb454016ad6fc2ae5238ca9/assets/lib/MODxAPI/modUsers.php#L421
Serguei
Хотя, я бы просто подзапрос добавил.
Oleg
Снова про логику пакетов/неймспейсов/контроллеров. 1. сделал новый пакет, пусть TestPkg - значит это неймспейс TestPkg. 2. добавил туда файл BaseController.php в котором поменял namespace. 3. сделал шаблон testpage и для него вьюху testpage.blade.php 4. сделал контроллер TestpageController.php который наследует BaseController.php Кажется всё верно, но что бы я не писал в noCacheRender в TestpageController.php — ничего не падает во вьюху.
Andrey
Может кто-нибудь помочь с вопросом вёрстки? Абсолютно не силён в ней, поэтому столкнулся с проблемой с чужим сайтом. Удаляю любой блок, котоырй упоминается в JS - всё, ломается вся вёрстка (типа, не найден какой-то id и скрипт перестаёт работать, а за ним едет вёрстка вся)
Andrey
ковырять тысячи строк js ради малейших правок - так себе затея. Нельзя как-то обойти этот момент?
Andrey
удаляю всмысле html код, а не js
Null
https://github.com/evolution-cms/evolution/releases/tag/3.1.1
Азамат
Всем привет. Подскажите плиз. Есть ли возможность сортировать в doclister по тв полю ( типа 13.12.20 12:23:50) как нибудь в prepare перед самой сортировкой преобразовывая в unix формат?
Азамат
Сортировок несколько, передаю get параметрами
Азамат
То есть если я укажу параметр datetime в tvsorttype DL сам разберёт формат даты?
Andrey
'addWhereList' => 'STR_TO_DATE(`dltv_DATE_1`.`value`, \'%d-%m-%Y %H:%i:%s\') > NOW()', типа такой херни вроде
Andrey
Но где валяется — хз. Так что примерно.
Andrey
dltv_DATE_1 - вот эту магию искать в дебаге Доклистера.
Азамат
Дата в tv у меня записана строкой
Andrey
Тем более STR_TO_DATE
Азамат
Пробую в prepare с помощью STR_TO_DATE преобразовать в unix но что то не выходит. Должно ж по идее сработать?
Азамат
Или какое другое событие есть перед выборкой для преобразований?
Andrey
Я думаю, что проще было бы обернуть Доклистер в свой сниппет, выбрав айди ресурсов из таблицы ТВ. И сунуть их как $params[documents], вызвав уже потом $modx->runSnippet('DocLister', $params);
Азамат
Типа prepareBofore ?
Азамат
Мне нужно их сортировать щас из фронта, но вот с датой пока не разберусь
Andrey
Так дата в каком виде лежит в поле?
Anonymous
вопрос. а еФильтр поедет на 3.0?
Азамат
Так дата в каком виде лежит в поле?
Строка, приходит из вне
Andrey
Строка, приходит из вне
В строке что? дата типа "1 нулября 2000" или unixtime?
Азамат
21-12-20 12:23:30
Азамат
Типа нужно преобразовать в unix до сортировки как то
Andrey
UNIXTIME(поле, '%Y-%m-%d')
Andrey
SELECT * FROM posts WHERE parent_id = 20 AND STR_TO_DATE(date, '%d-%m-%Y') >= CURRENT_DATE() ORDER BY STR_TO_DATE(date, '%d-%m-%Y') ASC Где дата записана в базе как dd-mm-yyyy
Азамат
А, типа сначала достать id документов запросом уже в нужном порядке а потом их в доклистер вставить?
Andrey
Я ж выше написал)
Andrey
В таблице твшек фильтруем нужные значения, добываем contentid — считай, получили доки.