innerJoin(ProductVariant::tableName(), ProductVariant::tableName() .'.product_id = '. Product::tableName() .'.product_id') ->where(['and', ProductVariant::tableName().'.status = 0', ProductVariant::tableName().'.stock > 0']) ->limit(3) ->all(); } public function createRow( $product, &$content ){ if ($this->checkId($product->product_id)) { print $this->count++ . "\r\n"; $url = Url::to(['catalog/product', 'product' => $product]); $content[] = [ $product->variant->product_variant_id, $product->category->category_id, $product->category->name, $product->name, $product->price.' UAH', $product->image->getImageUrl(), $url, ]; } } public function checkId($id){ if(!in_array($id, $this->idList)){ $this->idList[] = $id; return true; } else { return false; } } public function actionProcess() { $config = ArrayHelper::merge( require(__DIR__ . '/../../frontend/config/main.php'), require(__DIR__ . '/../../common/config/main.php') ); Yii::$app->urlManager->addRules($config['components']['urlManager']['rules']); $dirName = Yii::getAlias('@frontend').'/web'; $filename = 'feed.csv'; setlocale(LC_ALL, 'ru_RU.CP1251'); $handle = fopen($dirName .'/'. $filename, "w"); $content[] = ['ID', 'ID2', 'Item Category', 'Item title', 'Price', 'Final URL', 'Image URL']; foreach ($this->getProducts() as $product) { $this->createRow($product, $content); } foreach ($content as $item) { fputcsv($handle, $item); } fclose($handle); print $dirName .'/'. $filename; } }