Виталий
Руками сделал, дальше понял, что поля не хватает, заменил в БД
Виталий
Файлы затираются после перегенерации, ТС прав
Евгений
так отнаследуйся от модели
Евгений
и меняй модель хоть по 100 раз на дню
Иван
так зачем изменения им делать, это же просто копипаст основы для crud
Ну вот я сейчас сделал базу на две таблицы по три поля. И хочу уже это обкатать. Потом я захочу ещё 100500 полей в куче таблиц. Не хотелось бы это всё вручную писать (зачем мне gii тогда вообще). Если же он мне перепишет родительский класс, то всё что я дописал в дочернем сохранится, где надо я смогу переопределить метод (при этом если надо обращаться к родительскому через parent). Плюс некоторое уменьшение зависимости. Из минусов вижу разве что оверхед на "лишние" классы и наследование. Однако я могу не знать о какой-то причине почему так делать нельзя.
Виталий
так отнаследуйся от модели
Кроме модели нужно ещё править шаблон. Да и с наследованием код проще явно не становится.
Dmitriy
если не менять поля то не нужно править шаблон
Виталий
2 таблицы связаны М:1, gii генерирует на поле-связку input обычный, а нужен select. Как не править шаблон?
Иван
Есть у меня горький опыт проекта, где почти каждый объект был eav-сущностью. Студийный говнофреймворк сильно заточен под клепание сайтов, структура которых заранее не слишком то известна и под частые её изменения. Пока проекты были не слишком большими всё было прекрасно. Но потом стали появляться весьма тяжелые и дорогие проекты. И вот мой последний проект оказался этой фигне настолько не по силам, что лучше бы я его с нуля писал. Тогда то я очень горько пожалел, что не отделил код моделей от фреймворка. Оно там так переплелось, что изменить способ хранения и обработки какой-либо сущности без переписывания половины всего кода оказалось невозможно. Производительность на дне, впилить новую фичу и не добавить паре сотен миллисекунд целая история. Это был провал. В итоге ценой адских костылей с патчингом и переписыванием минимум 1/3 всего "системного" кода и бессоными ночами кое-как привёл всё это в условно пригодное состояние (к слову: некоторые фичи оказалось невозможно сделать быстрыми без автоматической кодогенерации и автоперекраивания структуры бд). Но на носу себе зарубил: логику хранения от бизнес логики нужно отделять. То же и для любого другого широко используемого инструмента. В любой момент может оказаться, что отныне он не годен и будет прекрасно, если заменить его частично или целиком можно будет более-менее безболезненно.
Иван
Пока я тут телегу писал на том самом проекте база сломалась %)
Dmitry
)))
Тёмыч
Есть у меня горький опыт проекта, где почти каждый объект был eav-сущностью. Студийный говнофреймворк сильно заточен под клепание сайтов, структура которых заранее не слишком то известна и под частые её изменения. Пока проекты были не слишком большими всё было прекрасно. Но потом стали появляться весьма тяжелые и дорогие проекты. И вот мой последний проект оказался этой фигне настолько не по силам, что лучше бы я его с нуля писал. Тогда то я очень горько пожалел, что не отделил код моделей от фреймворка. Оно там так переплелось, что изменить способ хранения и обработки какой-либо сущности без переписывания половины всего кода оказалось невозможно. Производительность на дне, впилить новую фичу и не добавить паре сотен миллисекунд целая история. Это был провал. В итоге ценой адских костылей с патчингом и переписыванием минимум 1/3 всего "системного" кода и бессоными ночами кое-как привёл всё это в условно пригодное состояние (к слову: некоторые фичи оказалось невозможно сделать быстрыми без автоматической кодогенерации и автоперекраивания структуры бд). Но на носу себе зарубил: логику хранения от бизнес логики нужно отделять. То же и для любого другого широко используемого инструмента. В любой момент может оказаться, что отныне он не годен и будет прекрасно, если заменить его частично или целиком можно будет более-менее безболезненно.
👍
Иван
👍
реляции?
Евгений
👍
он рассказывал про EAV-модель
Тёмыч
реляции?
Блин, случайно вставилось - сорь. Я про то что ты все правильно написал, что необходимо отделять логику хранения от фреймворка, если угодно даже вводить доп слой абстракции. Мы вот тоже на этапе реализации огромного проекта и твои "мысли в слух" подталкивают в нужном нправлении
Иван
он рассказывал про EAV-модель
и про то, что когда от неё пришлось отказаться это оказалось проблемно
Иван
Ппц. Мускуль стал во-первых писать кучу временных таблиц, во-вторых они у него на диск не помещаются (ну или ещё почему-то записать не может).
Иван
Интересно, есть ли аналог слова "говнокод" для администрирования? А то чтобы сервак поднять "шедевр" сотворил и не знаю какую табличку повесить.
Пантелеев
Гавноконфиг)
Konstantin
Кто подскажет где можно посмореть на код более-менее крупного проекта на yii2. На гитхабе удалось найти только примеры блогов.
Mikhail
Кстати, да. Тоже интересует эта тема, а также т.н. best practices
Dmitriy
https://github.com/giovdk21/deployii https://github.com/komarserjio/notejam https://github.com/sadiqdon/cycommerce https://github.com/opus-online/yii2-app-ecom
Mikhail
> notejam a year ago > cycommerce 3 years ago >yii2-app-ecom > 2 years ago эх
Dmitriy
Юпи еще
Александр
dotplant 2
SiZE
подсмотришь там какой нибудь трешак )
Иван
подсмотришь там какой нибудь трешак )
хорошо бы поглядеть что-нибудь, где весь трешак уже поправили) лучше конечно ещё и историю "как мы пилили проект, залезли в такое-то и такое-то дерьмо, вылезли из него тако-то и так-то и пришли к таким-то и таким-то выводам"
Иван
В yii можно стандартными средствами обрабатывать результат запроса в базу потоково (fetch а не fetchAll)?
Иван
Я так понимаю "полное руководство" ни разу не полное.
Иван
А вот аналога fetchColumn не вижу.
SiZE
А что ты хочешь? Не очень понял
Иван
В цикле получать по элементу колонки за раз, а не сразу целым массивом.
Иван
Прямо сейчас мне это не нужно, но хотелось бы знать.
Иван
Можно наверно просто выбрать одну колонку и each юзать, но тогда мы будем получать каждый раз массив на один элемент, а не сам этот элемент. Ничего страшного, но если можно без этого, то лучше без этого.
Иван
И ещё интересует насколько популярен в YII (и есть ли с этим какие-то проблемы) подход, когда большие списки обрабатываются, рендерятся и отдаются браузеру потоково, условно говоря в цикле: прочитали строку из базы, отрендерили кусок html/json/xml, отдали клиенту. Модель бы возвращала итератор. Хотел на тостере этот вопрос написать, да не знаю как сформулировать заголовок.
Иван
Он вернём id или ['id'=>id]?
Vladimir
Он вернём id или ['id'=>id]?
http://rmcreative.ru/blog/post/yii2-batch
Иван
ладно, спасибо
SiZE
он вернет ['id' => id]
Иван
fetch выходит есть, а fetchColumn нет, ну ок
Konstantin
Кто знает насколько хорошей считается практика засовывать js код в php строку в виджетах yii?
Mikhail
Ты хотел написать <<насколько плохой>>?
Konstantin
Можно и так
Mikhail
Вообще, очень плохая практика. Но иногда я кладу js во вьюшки, но в таком случае там находится только js.
Mushu
привет всем не кто не работал с JsonAPI?
Mikhail
И то, через какое-то время этот код кочует в отдельный js-файл.
Mushu
да его
Konstantin
И то, через какое-то время этот код кочует в отдельный js-файл.
А как тогда можно поступить если к примеру селектор js формируется динамически, на основе данных переданных в виджет?
Иван
Правильно я понимаю, что \app\models\User по дефолту просто пример и я могу с ним что хочу воротить, например от AR отнаследовать вместо object'а.
Mikhail
Если не получится, то в виджете можно сгенерировать json-конфиг, который будет содержать нужный селектор.
Anonymous
https://github.com/giovdk21/deployii https://github.com/komarserjio/notejam https://github.com/sadiqdon/cycommerce https://github.com/opus-online/yii2-app-ecom
https://github.com/sadiqdon/cycommerce/blob/master/backend/controllers/CategoryController.php#L136 и это хороший пример?
SiZE
Форматирование не по PSR-2. Фу таким быть.
Anonymous
а то что в экшене дохера кода это норм?)
SiZE
Конечно дохера кода не норм
Евгений
тут кода строчек 5
Евгений
ну 7
SiZE
особенно радуют программисты экономящие буквы $suc
Anonymous
Да я раньше так делал
Anonymous
потом понял что это путь в никуда
SiZE
ну типа длинные имена переменных кушают память.. но чтобы реально эффект от этого получить, должен быть хайлоад
Anonymous
Кто как оформляет справочники в коде Что то типо: Статус, Тип, Состояние и так далее
SiZE
id, alias, name.
Anonymous
в одной таблице?
SiZE
нет
SiZE
но вообще по разному можно хранить. Кому как удобней
Anonymous
как вам такой подход? http://pastebin.com/EpkWNMYG
SiZE
Тоже хорошо. Но тогда под каждый справочник я завел бы точно свой класс.
Anonymous
Anonymous
лишний