Сергей
Xxx.yyy=5
Evgeniy
https://www.google.ru/search?q=yii2+filter+related+model
А если вот товар связан с таблицей "совместимости с моделями" и уже от модел связан с маркой. и с атрибутами
SiZE
Я всегда начинаю с составления SQL запроса.
Evgeniy
Я всегда начинаю с составления SQL запроса.
получается связь будет строиться так >andFilterWhere(['like', 'compatibility.models.marks.name', $this->mark])
Konstantin
короче если у тебя, к примеру, есть статья, а у нее есть теги, и это связь N-N
Konstantin
то
Konstantin
Article::find()->joinWith('tags')->andFilterWhere(['tag.id' => $tag_ids])
Konstantin
работать будет, то найдет все статьи, в которых есть хотя бы один тег из $tag_ids
Konstantin
если придумаешь, как без велосипедов найти все статьи, в которых есть каждый из тегов в $tag_ids - похвастайся
Konstantin
ну вот, и в своем стремлении к изяществу и нормализации ты можешь выгрести жуткие и тяжеловесные запросы
Владимир
Как прикрутить валидацию номера телефона?
Владимир
<?=$form->field($model,'phone')->widget(MaskedInput::className(),['mask'=>'+7 (999) 999-99-99'])->textInput(['placeholder'=>'+7 (999) 999-99-99','class'=>''])->label('Ваш Телефон');?>
Владимир
Выводится маска, но когда начинаю вводить то пробелы и скобки не вставляются автоматом
Konstantin
Но есть же кеширование)
мне кажется, что лучше денормализация
Konstantin
ну добавить избыточности
Konstantin
ради упрощения запросов
Konstantin
ну вот выводишь ты статьи, а в них комментарии есть
Konstantin
а надо тебе показать возле статьи сколько комментариев
Konstantin
так лучше завести прямо явный счетчик в статье и его инкрементировать, чем каждый раз пересчитывать комментарии в таблице комментариев
Konstantin
не говоря уже о том, чтобы отсортировать статьи по количеству комментариев\
Evgeniy
не говоря уже о том, чтобы отсортировать статьи по количеству комментариев\
С комментариями понятно)) со всем остальным?) атрибуты марки модели
Konstantin
связи 1-N не представляют никаких сложностей
Evgeniy
связи 1-N не представляют никаких сложностей
Это да. Но продукт связан с таблицей совместимости с моделью техники, а в свою очередь модель с маркой. И хочу вывести товары определённой марки техники)
Konstantin
ну и что?
Konstantin
ой
Konstantin
продукт и модель связаны как N-N?
Evgeniy
продукт и модель связаны как N-N?
Не всегда один продукт может принадлежать к нескольким моделям
Konstantin
N-N
Dmytro 🇺🇦
Немного оффтопа
Dmytro 🇺🇦
http://www.opennet.ru/opennews/art.shtml?num=47192
Konstantin
круто
Konstantin
и новый сублайм сегодня появился
Rinat
типа противовес шторму?)
Ivan
типа противовес шторму?)
Любая конкуренция лучше отсутствия конкуренции
Rinat
да, это так
Konstantin
вообще, ты можешь отдельным запросом получить все модели нужной марки
Konstantin
а после этого вторым запросом уже все товары нужных моделей
Konstantin
а если хочешь, можешь еще эти два запроса выполнять не отдельно, а вместе, как вложенный запрос
Konstantin
между джоинами и вложенным запросом я бы тут выбрал вложенный запрос
Evgeniy
между джоинами и вложенным запросом я бы тут выбрал вложенный запрос
Спасибо за идею) кстати, она самая адекватная из всех которые перебрал)
Konstantin
ну и попробуй
Konstantin
похвастаешься
Niko
@beowulfenator чем вложенный запрос лучше? разве они быстрей чем один джойн?
Konstantin
смотря какой джоин и смотря какой запрос
Niko
не в случае когда 2000 к 7000 джойнятся, а когда посты юзера доставать
Konstantin
отложим вложенный запрос :)
Konstantin
у тебя есть таблица с юзерами и таблица с их постами
Konstantin
если тебе надо запросить юзеров с их постами...
Niko
а у постов коменты с юзерами, теги
Konstantin
о, и с комментариями!
Konstantin
смотри
Konstantin
у тебя 100 юзеров, у каждог по 10 постов, а в каждом посте по 5 комментариев
Konstantin
если запросить все с двумя джоинами, то result set будет содержать сколько строчек?
Konstantin
5000
Konstantin
и вот получается, что содержимое колонок каждого юзера повторилось по 500 раз
Konstantin
памяти у сервера отожралось немало
Konstantin
именно поэтому в yii2 такую фигню свернули, а with() сделает три запроса: первый получит 100 юзеров, второй получит 1000 постов, а третий получит 5000 комментариев
Konstantin
вложенный запрос или не вложенный тут не так важно, вопрос скорее в том, что запросов несколько, а не один
Konstantin
как-то так
Niko
я вообще думал когда запросов несколько - это не скорее. И не понимаю чем with() в твоем описании лучше чем joinWith, если в первом случае мы сделали 1 запрос и получили 5000 строк, а во втором 3 запроса и 6100 строк
gud3
кто-то может обьяснить почему так? https://github.com/yiisoft/yii2/issues/14754
Konstantin
в php волшебные массивы, которым может позавидовать любой другой язык :)
Konstantin
фигня в том, что массивы в php сохраняют порядок даже для символьных ключей
Konstantin
поэтому $myarray = ['a' => 1, 'b' => 2] - это совсем не то же самое, что $myarray = ['b' => 2, 'a' => 1]
Konstantin
там надо поменять их порядок, чтобы в массиве authenticator непременно шел за corsFilter
Konstantin
потому что где-то в коде есть foreach, в который authenticator должен поступить первым
Konstantin
то, что ты делаешь в контроллере - это не редактирование элементов
Konstantin
смена порядка записей в массиве делается слегка костыльно, ты сперва убиваешь запись authenticator, а затем добавляешь ее снова, но она добавляется в конец
Konstantin
как-то так