В приведенном примере Вы формируете ActiveQuery с помощью $user->getVideos()->limit(4), но его не используете поскольку общаетесь напрямую к реляции videos
Алексей Мариненков: hasMany возвращает объект ActiveQuery, а значит Вы можете определять лимит, порядок сортировки, дополнительный условия и т.п. Если у Вас выводить все - скорее всего Вы его где-то переопределяете (например в DataProvider). Что Вы делаете дальше с видео? приведите код, т.к. ошибка не в этом месте
тогда, как то так (нужно тестить)
SELECT
table1.id,
AVG(table2.price) as avgprive
FROM table1
LEFT JOIN table2 ON table2.`value` IN (table1.value1, table1.value2, table1.value3, table1.value4, table1.value5)
GROUP BY table1.id
ORDER BY avgprive
Eduard:
1. Да можно кэшировать данные, только зачем забивать кэш там, где этого можно не делать? Не стоит забывать, что использование кэша так же влияет на используемые системой ресурсы, которые стоят денег. На небольших проектах это не заметно, но если Вам понадобиться закэшировать 100500 ГБ фоток у Вас будет значительное потребление ресурсов, которое приведет к необоснованному повышению стоимости поддержки проекта.
2. Будет ли инвестор или нет, этого заранее не известно, как и не известно когда система упрется в лимит. Можно строить какие-то предположения, но не более того. Если же система разрабатывается для внутренних целей компании - то инвестора просто не будет. Представьте ситуацию, разработчик сделал систему для внутреннего пользования для крупного риэлтерского агентства. Для каждого объекта, с которым работает агентство, есть возможность загружать кучу фоток. На этом проекте нет сверх нагрузок, и руководителю незачем тратить кучу денег на какие-то навороченные сервера. Инвестора тоже ждать не откуда. Прошел год, и сотрудники так засрали базу фотками что ОС уперлась в лимит на размер файла. Что делать? Агентство не может работать с системой и теряет деньги. И тут есть два варианта - либо обратиться к разработчику, что бы он разобрался в чем причина, и если разработчик не занят он судорожно начнет искать проблему, рыть настройки ОС и т.п. Либо подключить стороннего разработчика, который так же судорожно будет решать проблему, но при этом еще, и разбираться с тем, как она устроена. В любом из вариантов это риски и потери денег для бизнеса - ведь система не работает а компания теряет деньги, кроме того нужно ведь еще и оплатить работу программиста за решение этой проблемы. Можно много приводить подобных примеров ....
3. Тут действительно я не правильно выразился. Имел ввиду, что храня название или путь к файлу мы можем с этими данными производить различные служебные операции. А храня содержание файла - мы с ним полноценно ничего делать, не можем, т.к. вряд ли кому-то нужно будет делать выборку по содержимому изображения. Скорее всего, придется для этих целей создавать дополнительные поля в БД.
4. Вы не сможете полноценно реализовать HTTP-кеширование. Да Вы сможете написать скрипт, который будет посылать необходимые заголовки для браузера, но он в любом случае будет потреблять дополнительные ресурсы, на получение даты модификации файла.
5. Я имею ввиду именно разделения на разные физические сервера (по необходимости). Репликация – решает проблему доступности сервера, но никак не описанную проблему.
Мы можем с Вами долго и бессмысленно спорить о плюсах и минусах каждого подхода, согласен с Вами, что нужно обдумывать реализацию, т.к. бывают очень специфические задачи когда действительно имеет смысл хранить файлы в БД, но в большинстве случаев - этот подход довольно плохой, который ведет только к ненужному усложнению системы и излишним трудозатратам которые можно было избежать.
у Вас НЕ МОЖЕТ БЫТЬ во всех случаях ОДИНАКОВОГО варнинга. Тот варнинг что Вы привели на скринах - говорит что используется параметр $data который не предусмотрен в родительском методе
Стандартный функционал работы с ресурсами не позволяет такое делать. Поэтому Вам нужно либо делать свой AssetManager с нужным функционалом, либо вручную получать каждый файл из AssetBundle (в том числе и с AppAsset) и инклудить его на страницу
если Вы будет делать проверку по Permission тогда этого будет достаточно. RBAC может проверять доступ либо по роли либо по разрешениям. А про сам rbac можно почитать здесь https://github.com/yiisoft/yii2/blob/master/docs/g...
joxi.ru/DrllVveTzRvGrP
joxi.ru/1A51p5nH65nwAE
мне кажется или сейчас Все нормально?