В таблице хранятся выбранные пользователем данные. Среди прочих в таблице есть поле day
и news_date
. Day
хранится в целочисленном формате (например, 9), news_date в формате int (timestamp) (например 1502229600 - это Tue, 08 Aug 2017 22:00:00 GMT).
Есть форма с кучей групп radioButton при помощи которой пользователь выбирает данные, которые затем попадут в таблицу. Выглядит она вот так:
Выбранные новости отправляют в контроллер где их обрабатывает цикл:
foreach ($text as $id => $newsText)
(здесь $text
- массив с выбранными данными, $id
- id новости и $newsText
- текст новости) заполняют нужные поля таблицы (примерно так $model->id_news = $id;
) и сохраняются в базу.
Проблема: выбрана может быть только одна новость из столбца за один год. Т.е если пользователь выбирает новость из левого столбца "2017" то необходимо удалить все новости за 2017-й год (news_date преобразую в год) день этой новости в поле day
из таблицы и сохранить запись заново.
Пытаюсь сделать как то вот так
foreach ($text as $id => $newsText) {
//ищу в таблице запись по $id
$thisDayNew = $model::findOne(["id_news" => (int) $id]);
//а дальше не знаю что и как делать :(
if ((int) $thisDayNew->id_news != (int) $id) {
//удалить все новости $id которых не подошло
//и добавить новую
$model = new ThisDay;
$model::deleteAll
(["FROM_UNIXTIME(news_date, '%Y')"
=>
date("Y", $tdNew->news->cdate),
"day" =>
date('j', mktime(0, 0, 0,
date('m', $tdNew->news_date),
date('d', $tdNew->news_date),
date('Y', $tdNew->news_date)))]);
} else {
//просто вставляю новую запись (это сделано уже:))
}
Пояснение:
В date('Y', $tdNew->news_date)
я получаю дату публикации новости
Но этот код никак не срабатывает. Как реализовать данный функционал удаления?
P.S
var_dump($thisDayNew);
подсказывает что $thisDayNew
хранит массив как на изображении ниже
Проблема оказалась в самом условии и немного в том, что следовало за ним. Исправленный код выглядит так:
//если массив пустой, значит выбранной новости нет в таблице ThisDay
if (!$thisDayNew) {
$model = new ThisDay;
//следовательно ищем по id выбранной новости в другой таблице
$newsM = News::findOne(["id" => $id]);
$model::deleteAll(["FROM_UNIXTIME(news_date, '%Y')"
//и подставляем данные уже из нее, где они нужны
=> date("Y", $newsM->cdate_int),
"day" =>
date('j', mktime(0, 0, 0,
date('m', $newsM->cdate_int),
date('d', $newsM->cdate_int),
date('Y', $newsM->cdate_int)))]);
//тут код сохранения новых данных
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я знаю, какой функцией можно осуществить данную проверку, но не совсем понимаю как правильно ее прикрутить к уже существующей функции добавления...
Добрый день! Пытаюсь сделать выгрузку CSV товаров с сайта на BitrixИспользую стандартный компонент Контент->Инфоблоки->ЭкспортCSV
Есть переменная $search она содержит 0,44,77,22,113 Вторая переменная $del она содержит 33,66