Size: a a a

2021 May 14

В

Виктор in Yii Framework 3
Где-то может быть даже цикл с телом вроде $factory-get($this->computeQueueChannel(...$parameters))->push($message);
источник

DS

Dmitriy S in Yii Framework 3
Этот синтаксис уже не работает
источник

В

Виктор in Yii Framework 3
источник

В

Виктор in Yii Framework 3
я все пропустил
источник

DS

Dmitriy S in Yii Framework 3
Кложу надо обернуться в DynamicReference::to()
источник

IS

Insolita Secret in Yii Framework 3
То ли я дура, то ли лыжи не едут... получается сейчас такой запрос через реляции не cформировать
sql
SELECT "documents".*,"dup".*
FROM "documents"
   LEFT JOIN "documents" "dup"
       ON ("documents"."filehash" = "dup"."filehash"
               AND "documents"."company_id" = "dup"."company_id"
               AND "documents"."id" != "dup"."id"
           )
   WHERE "documents"."company_id"='5'

Если с равенством еще можно обойти, добавив в link оба аттрибута
return $this->hasMany(Document::class, ['filehash' => 'filehash', 'company_id'=>'company_id])->alias('dup')
запрос немного по другому будет выглядеть, но делать что надо,  а с не равенством никак  😞  
->onCondition('"dup"."id" != "documents"."id"')  не прокатывает, так как ожидает конкретное значение, а не столбец
источник

ПА

Павел Афонин... in Yii Framework 3
->onCondition('"dup"."id" != "documents"."id"') - а если обернуть в new yii\db\Expression?
источник

IS

Insolita Secret in Yii Framework 3
не прокатывает,
источник

ПА

Павел Афонин... in Yii Framework 3
а полную AR скинь
источник

IS

Insolita Secret in Yii Framework 3
Document::find()->alias('documents')
   ->where(['documents.company_id' => $company->id])->joinWith('duplicates')->limit(3)->all();
источник

IS

Insolita Secret in Yii Framework 3
public function getDuplicates()
   {
       return $this->hasMany(Document::class, ['filehash' => 'filehash','company_id' => 'company_id'])
              ->alias('dup')
           ->onCondition(new Expression('"dup"."id" != "documents"."id"'))
           ;
   }
источник

IS

Insolita Secret in Yii Framework 3
Оно как-то позже onCondition часть обрабатывает
источник

IS

Insolita Secret in Yii Framework 3
Нашла в докблоке 😞

   * Note that this condition is applied in case of a join as well as when fetching the related records.
    * Thus only fields of the related table can be used in the condition. Trying to access fields of the primary
    * record will cause an error in a non-join-query.
источник

В

Виктор in Yii Framework 3
Мерсю
источник

D

DarkDef in Yii Framework 3
А может onCondition из релэйшена hasMany убрать и попробовать в кверибилдер сунуть?
источник

IS

Insolita Secret in Yii Framework 3
Ну само собой можно напрмяую,  но вся фишка связи теряется
источник

IS

Insolita Secret in Yii Framework 3
А, поняла... оставить связь с дублями...  помо отфильтровать лишнее...
источник

D

DarkDef in Yii Framework 3
Поставил себе отдельно active-record и поизмывался над тестами
источник

D

DarkDef in Yii Framework 3
return $this->hasMany(
           Item::class,
           ['id' => 'item_id']
       )->alias('dup')->andOnCondition('dup.id22=order.item_id22');
источник

D

DarkDef in Yii Framework 3
Получаю
SELECT order.* FROM order LEFT JOIN item dup ON (order.item_id = dup.id) AND (dup.id22=order.item_id22)
источник