@Ghost2692

Как сделать поиск по связанной моделью в Yii2?

$query = ReportMailing::find()->where(['user_id' => Yii::$app->user->id]);

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pageSize' => Yii::$app->params['showEntriesDefault'],
                'forcePageParam' => false,
                'pageSizeParam' => false,
            ],
            'sort' => [
                'defaultOrder' => [
                    'created' => SORT_DESC,
                ]
            ],
        ]);

        $this->load($params);

        if (!$this->validate()) {
            return $dataProvider;
        }

        $query->andFilterWhere(['like', 'mailing_id', $this->subject]);

        return $dataProvider;

И модель связи ReportMailing
public function getMailing()
    {
        return $this->hasOne(Mailing::className(), ['id' => 'mailing_id']);
    }

Мне нужно найти данные в другой таблице по полю subject. Как это сделать?
  • Вопрос задан
  • 1310 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Измените немного свой код поисковой модели.
Примерно так:
$query = ReportMailing::find()->joinWith('mailing')->where(['user_id' => Yii::$app->user->id]);
  
   // формируете $dataProvider

        $query->andFilterWhere(['like', '{{%mailing}}.subject', $this->subject]);

        return $dataProvider;


p.s. Думаю, что like тут не нужен
$query->andFilterWhere(['{{%mailing}}.subject' => $this->subject]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы