Niko
Эти названия полей для примера, на самом деле там другое, но суть та же
Айбулат
Niko
да. post_id есть. Я нашел примечание одно в мануале
http://joxi.ru/82QjOadt14jndA
Niko
Сейчас попробую и вернусь
Niko
[['posts'], function ($attribute, $params, $validator) {
foreach ($this->{$attribute} as $post) {
if ($post->user_id === $this->post->user_id) {
$validator->addError($this->post, $attribute, 'Один пост у двух юзеров!!!');
}
};
}];
Так тоже не работает
Что я делаю не так?
Кто-нибудь делал кастомные валидаторы?
Niko
@aibulatik я использую ActiveForm, поле должно само появляться
Айбулат
Niko
не изменял
Borys
Подскажите пожалуйста по поиску many-to-many.
Есть три таблицы:
1. articles
2. tag
3. tag_articles (id|article_id|tag_id)
В articles есть связь:
public function getTagArticles()
{
return $this->hasMany(TagArticle::class, ['article_id' => 'id']);
}
public function getCurrentTags()
{
return $this->hasMany(Tag::class, ['id' => 'tag_id'])
->via('tagArticles');
}
И $model->currentTags отдает модели тегов назначенных для article.
Есть дефолтная ArticleSearch и я никак не могу понять что в нее добавлять для фильтрации articles по тегам.
Borys
Что-бы получать все articles с tag_id 5 например.
Borys
Ниже Info: In general, when eagerly loading N relations among which M relations are defined with a junction table, a total number of N+M+1 SQL statements will be executed. Note that a nested relation a.b.c.d counts as 4 relations.?
Ivan
В чём вопрос?
Borys
ниже синей плашки
Скинул выше текст синей плашки. На правильную смотрю?
Ivan
Сделай по ctrl+F поиск по странице $query->andWhere(['status' => Order::STATUS_ACTIVE]);
Borys
Прочел, не совсем понимаю как это применить в search модели.
Borys
Вот так работает, это норм?
if (!empty($this->searchTag)) {
$query->joinWith('tagArticles')->where(['tag_id' => $this->searchTag]);
}
Borys
Или можно как-то еще проще и понятнее сделать?
Karim
filterwhere
Borys
Не понял, можно подробнее?
Karim
вместо If empty юзать.
$query->joinWith('tagArticles')->filterWhere(['tag_id' => $this->searchTag]);
Но пропускать будет только если $this->searchTag === Null, если не ошибаюсь
Borys
работает
Borys
в итоге моя связь
public function getCurrentTags()
{
return $this->hasMany(Tag::class, ['id' => 'tag_id'])
->via('tagArticles');
}
и не нужна при этом поиске?
Borys
Бгг)
Borys
только что выше этот вопрос спрашивал
Alex
ну создаешь форму с полем каттегории и ручками дописываешь в search() (ну или как ты обзываешь метод у себя) фильтр по полю
Alex
ща покажу
Alex
дай шторму запустить)
Borys
http://joxi.ru/a2XWEL7Cy4BkBm?d=1
Borys
Что-то типо тебе надо?
Alex
[
'attribute' => 'projectManager',
'value' => 'projectManager.shortName',
'filter' => \app\models\User::getDataList(false,
\app\models\enums\UserTypes::PROJECT_MANAGER)
],
Alex
getDataList возвращает массив
Borys
[
'attribute' => 'searchTag',
'filter' => $tags,
],
где $tags массив ['id' => 'name']
Alex
там длинный кусок)
Alex
эта часть идет вместо 'category.name',
Valentin
Заполнить attribute в колонке
Valentin
Пример дали выше готовый
Borys
В rules твоей $searchModel должен быть указан атрибут
Borys
http://yiiframework.domain-na.me/doc/guide/2.0/ru/input-validation#declaring-rules
Borys
Теперь еще раз посмотри какой атрибут указан у тебя в GridView
Borys
Borys
Borys
Доку почитай :)
Borys
Павел
Ща мы игнор включим и выключим только за коньяк
Ivan
))))))
Дмитрий
Borys
Где же?
Borys
Дмитрий
Где же?
Наверное в типичном сичадмине
Borys
Это где такое?
Дмитрий
Borys
Кинь линк щито энто и хде я там
Дмитрий
Я написал "наверное"
The Ant
блять
The Ant
как мне задать условие в запросе с IS NULL ?
The Ant
$query->andFilterWhere([
'is', '`s`.`site_id`', null
]);
The Ant
не работает нихуя
Alex
не матерись)
Alex
у нас тут есть девочки)
The Ant
да сил нет уже
The Ant
какая-нибудь нестандартная выборка и начинаются танцы пляски
Alex
rcnf
Alex
кста
Alex
`` кавычки не обязательным вэтом случае
Alex
юии сам заэкранирует
The Ant
привычка
The Ant
ну и как сделать то ) все возможные варианты испробовал
The Ant
неужели весь трехэтажный кусок переписывать на текстовый запрос из-за этой хуйни?
Alex
эмм
Alex
а зачем фильтр то?
Alex
$q->andWhere(['is', '`s`.`site_id`', null])
Alex
и все
The Ant
да ;[ догнал тока щас
Karim
Konstantin
кстати, ->andWhere(['s.site_id' => null]) тоже работает
who are you
Alex
а меня может немного сбить с толку
Vadim
В phpstorm можно как-то найти все незакомменченные print_r, echo и т.п.?