- Предыдущая
- 1
- 2
- Показаны 16-25 из 25
Всё же я никак не пойму: зачем создавать суперскую объектную модель сайта, радоваться, что форма теперь создаётся в три десятка кликов, а одновременно требовать от пользователя-разработчика глубочайшего вникания в то, от чего его только что заботливо отгородили?
Другая непонятка: вроде бы ВРЕМЯ – не такая уж ненужная штука, в любой системе программирования с полдюжины функций встроенных имеется, чтобы удобно было временем оперировать и так, и этак… Почему же здесь времени не уделено вообще никакого внимания, кроме второстепенных настроечных возможностей?
Я уже подумал про использование выпадающих списков для выбора часов и минут, но это же опять, поперёк философии сайта, надо будет править какой-то шаблон, чтобы хотя бы эти списки сделать не во всю длину контроллера и на одной строке...
Всё поправимо, конечно, но почему так противоречиво?
Или я всё же опять чего-то недопонял?
Как в терминах Model.php переписать запрос
SELECT d . * , f.id, f.image FROM cms_kino_dates d LEFT JOIN cms_kino_films f ON d.code = f.code WHERE d.date > '2014-10-23'
public function getKino($date){ $this->filterEqual('date', $date); $this->select('f.id, f.image'); return $this->get('kino_dates'); }
обнаружил в классе fieldDate две функции, где речь идёт о времени, но не очень понятно – можно ли этим воспользоваться?
'title' => LANG_CONTENT_DATE_PUB, 'show_time' => true ), ) ))
У вас все верно, только вместо $this->join() используйте $this->joinLeft()Как в терминах Model.php переписать запрос
Раньше (в 1.x) вы тратили меньше времени на обучение, но зато при создании расширений каждый раз делали одни и те же операции.Почему же здесь времени не уделено вообще никакого внимания, кроме второстепенных настроечных возможностей?
Сейчас обучение займет больше времени, но зато потом все основные операции (создание тех же форм) будут выполняться гораздо быстрее
я перепрбовал и лефт, и райт, и от безысходности все варианты с join из model. Как только в методе появляется select — метод возвращает массив с 4мя элементами (уникальными, без повторов). Без join и select все хорошо. Возвращает все 5 записей из базы (4 уникальных фильма и один повтор в другом кинотеатре).У вас все верно, только вместо $this->join() используйте $this->joinLeft()
Вот для наглядности.
Мой запрос
А вот результат кода с join в методе
[2]=> ["date"]=> string(10) "2014-10-24" ["film"]=> string(38) "Прогулка среди могил" ["code"]=> string(6) "596274" ["place"]=> string(14) "Мелодия" ["time"]=> string(29) "09:00 13:30 15:40 20:10 20:30" ["id"]=> string(1) "2" ["image"]=> string(13) "kino/2014/10/" } [3]=> ["date"]=> string(10) "2014-10-24" ["film"]=> string(10) "Судья" ["code"]=> string(6) "588672" ["place"]=> string(14) "Мелодия" ["time"]=> string(29) "09:00 11:10 15:40 17:50 22:20" ["id"]=> string(1) "3" ["image"]=> string(13) "kino/2014/10/" } [1]=> ["date"]=> string(10) "2014-10-24" ["film"]=> string(14) "Дракула" ["code"]=> string(6) "395057" ["place"]=> string(14) "Мелодия" ["time"]=> string(17) "11:40 13:50 18:20" ["id"]=> string(1) "1" ["image"]=> string(13) "kino/2014/10/" } [5]=> ["date"]=> string(10) "2014-10-24" ["film"]=> string(18) "Выпускной" ["code"]=> string(6) "839200" ["place"]=> string(16) "Меридиан" ["time"]=> string(5) "22:45" ["id"]=> string(1) "5" ["image"]=> string(13) "kino/2014/10/" } }
public function getKino($date){ $this->select('f.id', 'film_id'); $this->select('f.image', 'film_image'); $this->joinLeft('kino_films', 'f', 'f.code = i.code'); $this->filterEqual('date', $date); return $this->get('kino_dates'); }
r2, безмерно вам благодарен, хотя мне безумно жаль тратить ваше поистине драгоценное время на такие мелочи!Раньше (в 1.x) вы тратили меньше времени на обучение, но зато при создании расширений каждый раз делали одни и те же операции.
Сейчас обучение займет больше времени, но зато потом все основные операции (создание тех же форм) будут выполняться гораздо быстрее
Ведь если бы та документация, которая столь здо́ рово начата здесь docs.instantcms.ru/dev/controllers, была продолжена и закончена, огромное количество вопросов бы не понадобилось, да и дошедших до результата разработчиков было бы заметно больше.
Видео-туториалы – отличный и нужный проект, он реально заряжает на действия! Но извлекать из него справочные знания – крайне тягомотно и, как показывает этот диалог, не слишком эффективно...
Ещё раз спасибо!
Это происходит потому, что эти строки имеют одинаковое значение в поле idбез синонимов он режет строки с повторяющейся ячейкой
по-умолчанию метод get() модели делает ключами массива значения поля id для каждой строкипри запросе из model.php они 1, 2,3,5
если посмотреть определение метода get() в классе cmsModel:
public function get($table_name, $item_callback=false, $key_field='id')
вы можете отменить это поведение так:
$this->get('kino_dates', false, false);
Поверьте, я и сам очень хорошо понимаю важность документации. Она обязательно будет продолжена как только выдастся возможность.Ведь если бы та документация, которая столь здо́ рово начата здесь docs.instantcms.ru/dev/controllers, была продолжена и закончена, огромное количество вопросов бы не понадобилось, да и дошедших до результата разработчиков было бы заметно больше
Я использую это решение при создании своего компонента в форме поля даты и времени .
В таблице типа timestamp и datetime .
Формат постоянный date('Y-m-d H:i:s')
Пример поля в форме
'title' => 'Title**', ), )
PS// Буду рад если Вам это поможет!
Да, Геннадий Иванович, однозначно поможет! Спасибо за столь радикальный способ!Буду рад если Вам это поможет!
Так же, как уже помогло решение от r2:
А потом, когда документация дойдёт до этого места, автор придумает, как органично эти приёмы включить в текст основного повествования!
- Предыдущая
- 1
- 2
- Показаны 16-25 из 25