Ну, это из разряда очевидного. Пишите на том, на чем вы умеете. Серч Модель генерится в разделе CRUD, модель поиска осуществляется по параметрам, которые получает из формы методом load т.е. из грида. Но и при желании поисковую модель и модель можно склеить так было в версии Yii 1. Разделение сделали по причине того, что для разных гридов могут быть разные условия. С моделями тоже очень легко работать, вы можете генерировать их на основе вашей БД, хотя вариант наоборот (если работали с Doctrine), тоже имеется. Yii2 хоть и имеет малый порог вхождения, он требует времени. Удачи вам в ваших проектах!
coderisimo: Ну, а в чем у вас сложности? В поисках по разным составляющим? Вы можете сделать в Строителе запросов, через AndWhere абсолютно разные запросы. Если вам нужно именно заточить поиск, много и по всем параметрам. Можно использовать Sphincs
Разве это не грузит базу? Вы создаете рандомное кол-во Id, которых может и не быть. Разве не проще будет взять все Id из базы, а потом радомно делать выборку их? обернув это все в транзакцию?
waterlilies: тогда нужно смотреть в конфиг mysql. В целом если вам нужно оставить все как есть и не заморачиваться. Совет от Андрея Суржикова, решит многие проблемы. Но есть пару рекомендаций по поиску и отлову особо долгих запросов. Будете знать запрос, сможете его поправить.
1. деление на инстансы советую раскомментировать #innodb_buffer_pool_instances=4
2. Отшибайте зависшие запросы
wait_timeout = 15
interactive_timeout = 15
net_write_timeout = 15
net_read_timeout = 15
Возможно вы на этом этапе увидите ошибку
3. Мониторьте запросы самые долгие по выполнению, возможно в них спрятана цикличность которая и выжирает память
Благодарю за ответ. Но текст и описание будут в БД, как та же статья в блоге с картинкой. и по сути на кнопках висит JS обработчик, который будет записывать в массив игрока данные того, что он найдет. А при переходе на след статью, действует проверка массива на совпадение. Вот собственно и все что мне нужно.
Но не совсем представляю как ограничить доступ к определенной статье, если это переходы между статьями. то одна из них должна содержать валидацию и таких страничек не то что бы много, но в действительности от 4-10 и чем больше будет тем более запутанный сюжет можно будет сделать.
я бы с радостью сделал бы это в духе Ангуляр + нода, проблема в том, что я не знаю не первого не второго, но в будущем конечно хочу на них попробовать пересесть, для практики. Спасибо за ответ.
Анна Б: вы стучитесь в методы наследников не через абстрактный класс, а напрямую.
Вы в своем приложении создаете новый объект и используете его методы.
например
$airplains = new Airplains ; // Тут создается объект
$airpalins->getEngine(); // Тут получается свойство объекта, которое он наследовал от абстрактного класса, либо какое-то свое свойство. В моем примере это двигатель.
$airplains->move(); // тут использование метода движение, которое было унаследовано у абстрактного, но сама реализация этой функции в классе Самолет.
Самолет и Машина двигаются по разному и это "описание" пишется в методе мув, !ДЛЯ КАЖДОГО СВОЕ. Но названия метода у них одинаковые. Это позволяет передавать разные объекты и не переживать за то, что они все будут исправно работать, если вы передадите самолет он летит, если машина то она поедет. Каждый класс знает, что ему делать. Если вы не реализуете абстрактный метод в других классах, классы будут кидать ошибку и требовать от вас их реализации.
ваш код $this->move() // взять текущий объект и использовать метод мув. Если такой метод есть, а он у вас есть. То все будет окей.
Если вы делаете это не через абстрактный класс, а просто через класс. Это будет переопределение метода. На практике это выходит так: у вас есть описание как двигается самолет, а потом вы вызываете машину и машина начинает использовать тоже самое, что и самолет в итоге машина летит, а не едет.
Zheka Dzecina: Да, это хороший подход. В частности Ангуляр и реакт именно так и используют. Серверные языки варьируются, Perl, C++, Noda, Java и даже на PHP делают связку. На клиенте вы сами выбирайте, что вам больше нравится.
PS. Ангуляр требователен к знаниям собственного синтаксиса, но позволяет делать многие вещи из коробки. Реакт позволяет собрать собственные библиотеки и кроме JS ничего больше не нужно знать(например, если вы захотите перенести ваше JS приложение на десктоп NodeWebkitJS то реакт перенести проще). На 2015 реакт был лучшим. С выходом ангуляр 2, думаю ситуация выравнивается. У Ангуляра нету дебагера внятного, у реакта он есть. И если у ангуляр ошибка, то приложение молча подыхает и на этом все, реакт скажет где именно ошибка. В плане веса реакт весит меньше, но это нормально ибо не имеет доп. плюшек как у ангуляр.
Это нормальная практика. Никто не зубрит, даже мидлы порой получая задание, еще не знают как будут его решать. Сейчас вы знаете Php, через лет пять к нему прикрепятся еще несколько языков. вы думаете, что будете знать все на зубок? Работа с документацией неотъемлемая часть нашей работы коллега. Все что вам нужно со временем набьется на руку. Что касается MVC - это для упорядоченности и простоты в поддержки проекта. Ничего лучше пока не придумали, но и не всегда это обязательно, хоть и является Best Практик. )
тостер хабрович:
1) onreadystatechange - Не используйте его, он совершенно лишний.
2) В методе Open - попробуйте передать URL Более точно localhost:8080/index.html с указанием явного порта. Либо 81 выставить, либо httpS попробовать. Так происходит из-за прав доступа. Если у вас есть логин и пароль к серверу. То передавайте их в качестве 4 и 5 параметра в open
Читайте то, что вам пишет ваш обработчик. Он вам говорит:
Вы не можете использовать HTTP запросы. Подозреваю вы пытаетесь что-то загрузить из локальной среды. Вам нужно использовать реальный сервер для таких операций, либо не использовать XMLHttpRequest.
И почитайте PSR для поддержки кода. В противном случае, с вами никто не будет работать, и за ваши проекты никто не возьмется допиливать.
Говорю сразу, не специалист, но как вы собираетесь в дальнейшем расширять те же типы счетов? У вас уже идет дубликация кода, не проще ли сделать класс отдельно, а потом наследоваться и дополнять в наследниках?