Дмитрий
вот это говорит что бы брать или не брать из запроса
Ilia
Какаято засада непонятная. Передаю параметр в модель что бы t1.id != getState(extrude_id) без параметра в items extrude_id есть а с доп параметром extrude_id режет, хотя смотрел query там where и там и там присутствует
Дмитрий
Ilia
Хз как
Ilia
попробую
Ilia
$model_schchanges = JModelLegacy::getInstance( $name = 'Schchanges', $prefix = 'FokServiceModel', array('ignore_request' => true) ); // Взяли модель
$model_schchanges->setState('schchanges.limit', 0);
$model_schchanges->setState('schchanges.datetime1', $data['datetime1']);
$model_schchanges->setState('schchanges.datetime2', $data['datetime2']);
$model_schchanges->setState('schchanges.room_id', $data['room_id']);
$model_schchanges->setState('schchanges.disable_filter', 1);
$model_schchanges->setState('schchanges.period_inner', 1); // Те что входят полностью
$model_schchanges->setState('schchanges.period_border', 1); // Те что пересекаются с одной границей
$model_schchanges->setState('schchanges.period_over', 1); // Те что больше границ с обеих сторон
$model_schchanges->setState('schchanges.period_outer', 0); // Те что не попадают в диапазон
if (isset($data['id']) && $data['id'])
{
$model_schchanges->setState('schchanges.exclude_id', $data['id']);
}
$items = $model_schchanges->getItems();
if ( isset($items) && $items)
{
$app->enqueueMessage(JText::_('SCHCHANGE_ERROR__DOUBLE_PERIOD2ROOM'), 'error');
return false;
}
Дмитрий
лучшек скрином наверное
Дмитрий
с подстветкой то бы было
Дмитрий
$model_schchanges = JModelLegacy::getInstance( $name = 'Schchanges', $prefix = 'FokServiceModel', array('ignore_request' => true) ); // Взяли модель
$model_schchanges->setState('schchanges.limit', 0);
$model_schchanges->setState('schchanges.datetime1', $data['datetime1']);
$model_schchanges->setState('schchanges.datetime2', $data['datetime2']);
$model_schchanges->setState('schchanges.room_id', $data['room_id']);
$model_schchanges->setState('schchanges.disable_filter', 1);
$model_schchanges->setState('schchanges.period_inner', 1); // Те что входят полностью
$model_schchanges->setState('schchanges.period_border', 1); // Те что пересекаются с одной границей
$model_schchanges->setState('schchanges.period_over', 1); // Те что больше границ с обеих сторон
$model_schchanges->setState('schchanges.period_outer', 0); // Те что не попадают в диапазон
if (isset($data['id']) && $data['id'])
{
$model_schchanges->setState('schchanges.exclude_id', $data['id']);
}
$items = $model_schchanges->getItems();
if ( isset($items) && $items)
{
$app->enqueueMessage(JText::_('SCHCHANGE_ERROR__DOUBLE_PERIOD2ROOM'), 'error');
return false;
}
\Joomla\CMS\MVC\Model\BaseDatabaseModel - сразу меняйте на namespace
Дмитрий
и в переменных нет смысла в аргументах там
Дмитрий
они врядл и у вас дальше будут испрлтзоваться
Дмитрий
$model_schchanges = JModelLegacy::getInstance( $name = 'Schchanges', $prefix = 'FokServiceModel', array('ignore_request' => true) ); // Взяли модель
$model_schchanges->setState('schchanges.limit', 0);
$model_schchanges->setState('schchanges.datetime1', $data['datetime1']);
$model_schchanges->setState('schchanges.datetime2', $data['datetime2']);
$model_schchanges->setState('schchanges.room_id', $data['room_id']);
$model_schchanges->setState('schchanges.disable_filter', 1);
$model_schchanges->setState('schchanges.period_inner', 1); // Те что входят полностью
$model_schchanges->setState('schchanges.period_border', 1); // Те что пересекаются с одной границей
$model_schchanges->setState('schchanges.period_over', 1); // Те что больше границ с обеих сторон
$model_schchanges->setState('schchanges.period_outer', 0); // Те что не попадают в диапазон
if (isset($data['id']) && $data['id'])
{
$model_schchanges->setState('schchanges.exclude_id', $data['id']);
}
$items = $model_schchanges->getItems();
if ( isset($items) && $items)
{
$app->enqueueMessage(JText::_('SCHCHANGE_ERROR__DOUBLE_PERIOD2ROOM'), 'error');
return false;
}
скрином можно?
Ilia
щаща
Дмитрий
if ( isset($items) && $items) а почему такое условие?
Ilia
Дмитрий
вы гвоорите если существует перемнная такая и в ней есть там не нулл/false, то выдать ошибку
Ilia
Слушай сейчас проходит норм и так и так. Я не пойму почему иногда бъюсь и лезет дишь и бац - перестает
Ilia
кеши где-то могут быть?
Ilia
Vladimir
Vladimir
смотри как исполняется и почему дичь
Дмитрий
по стандарту нет кеша в модели вроде
Ilia
Кеш выключен
Ilia
трассируй
есть чего почитать по трассируй?
Дмитрий
Дмитрий
оно кешируется только в озу на момент самого скрипта
Дмитрий
чтобы повторные запросы не делать
Дмитрий
если кеша в саомй модели не написано
Дмитрий
то и нету кеша именно файлового и тд
Ilia
Дмитрий
Дмитрий
вот storeId
Дмитрий
если у тебя ранее был getItems с такими парамтерами, то он и запомнил и отдает из ОЗУ текущего исполниеия скрипта
Ilia
Дмитрий
только вопрос еще раз можете задать? вы делаете getItems и приходит прыдущий результат?
Дмитрий
если да, то у них getStoreID один
Ilia
Нет в том то и дело что должно придти пусто, тк под условия попадает только 1 и его я хочу t1.id != extrude_id. а он залазиет в items
Ilia
в query часть запроса != присутствовала
Дмитрий
Дмитрий
getListQuery покажи
Ilia
Сейчас норм. Но я ничего не трогал и бах - заработала...
Ilia
Ilia
в xdebug в query смотрел запрос != был, а итем тащил этот id
Дмитрий
а у тебя data[‘id’] всегда число?
Дмитрий
у тебя явной типизации нет
Ilia
Ilia
а разве is_numeric не решает
Дмитрий
ну ты если строку передаешь то твое условие не будет работать
Дмитрий
string «101» и твое условие не рабоатет
Ilia
Ilia
Дмитрий
у тебя всегда в data[‘id’] число?
Ilia
да
Дмитрий
ты уверен?
Дмитрий
проставь явный тип
Ilia
проверял на одном id
Дмитрий
сделай не is_numeric, напрмер
Дмитрий
$id = (int)$this->getState(‘exlude_id’, 0);
if($id > 0) {}
Дмитрий
вот так
Дмитрий
тебе приводить нигде в вызовах модеи не надо будет и типизация яваная в модели будет
Ilia
$query->where( 't1.id != ' . (int)$exclude_id ); одно и тоже?
Дмитрий
Дмитрий
а если в data[‘id’] - это строка а не число
Дмитрий
то твое условие не рабьтает
Ilia
Дмитрий
Дмитрий
потому что у тебя может в $data[‘’id] - не всегда число
Ilia
та и сделал
Дмитрий
и твое условие не всегда верно рабоатет
Ilia
Дмитрий
ну вот передам я $data[‘id’] = (string)101;
Дмитрий
и оно валится
Дмитрий
а из реквеста может такое придти
Ilia
Ilia
это все решает вроде
Дмитрий
в нем смысла нет уже в is_numeric
Дмитрий
лучше проверять на нуль
Дмитрий