Сложный запрос

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
german.igortcev
Сообщения: 251
Зарегистрирован: 2014.08.18, 14:01

Сложный запрос

Сообщение german.igortcev »

Помогите стоставить запрос. Уже замучался, не могу решить.

Требуется получить количество AffiliateConversion где Transaction amount=1,status=1. С связями разберусь, пример подобный хотябы.

Изображение

Дошел до такого состояния, но понимаю, with тут на прокатит

Код: Выделить всё

$affiliate->getAffiliateConversions()->with([
            'transactions' => function (\yii\db\ActiveQuery $query) {
                $query->andWhere('status = 1');
            },])->count();
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Сложный запрос

Сообщение Loveorigami »

Примерно, так

Код: Выделить всё

Affiliate::find()
    ->joinWith([
        'affiliateConversion ac'=> function($query){
              $query->joinWith(['transaction t']);
        }
    ])
->andWhere(['t.amount'=>1])
->andWhere(['t.status'=>1])
А вообще, первоначально лучше создать сам sql запрос, а после - перекладывать его на AR
german.igortcev
Сообщения: 251
Зарегистрирован: 2014.08.18, 14:01

Re: Сложный запрос

Сообщение german.igortcev »

Loveorigami писал(а): 2019.03.12, 09:19 Примерно, так

Код: Выделить всё

Affiliate::find()
    ->joinWith([
        'affiliateConversion ac'=> function($query){
              $query->joinWith(['transaction t']);
        }
    ])
->andWhere(['t.amount'=>1])
->andWhere(['t.status'=>1])
А вообще, первоначально лучше создать сам sql запрос, а после - перекладывать его на AR
Спасибо, чуть раньше ответа разобрался. Аналогично почти

Код: Выделить всё

$affiliate->getAffiliateConversions()->joinWith([
                            'transactions' => function (\yii\db\ActiveQuery $query) {
                                $query->andWhere(['amount' => 1, 'status' => Transaction::STATUS_DECLINE]);
                            },])->all()
Ответить