Export.php 2.24 KB
<?php

namespace app\modules\admin\models;

use Yii;
use yii\base\Model;
use app\modules\admin\models\Products;

class Export extends Model
{
    
    
    public function saveCsv($fname){
        $handle = fopen($fname, "w");
        $products = Products::find()->select(['products.*','cp.name as catalog_parent','cp.image as catalog_parent_image','c.name as catalog','c.image as catalog_image']);
        $products->leftJoin('catalog c', 'c.id = products.catalog_id');
        $products->leftJoin('catalog cp', 'cp.id = c.parent_id');

        
        //print_R($products);exit;
        foreach ($products->all() as $product){
            
            $mods = [];
            foreach($product->mods as $m){
               $mods[] = $m->art.'='.$m->name.'='.$m->cost; 
            }
            
            $fotos = [];
            foreach($product->fotos as $f){
               $fotos[] = $f->image; 
            }
            
            $types = [];
            foreach($product->type as $t){
               $types[] = $t->name; 
            } 
            
            $brends = [];
            foreach($product->brends as $b){
               $brends[] = $b->name; 
            } 
            
            $fasovkas = [];
            foreach($product->fasovka as $f){
               $fasovkas[] = $f->name; 
            }               
            
            $list = [$product->catalog_parent,
                     $product->catalog_parent_image,
                     $product->catalog,
                     $product->catalog_image,
                     $product->art . '=' . $product->name,
                     $product->image,
                     $product->char,
                     $product->body,
                     implode('|',$mods),
                     implode('|',$fotos),
                     implode('|',$types),
                     implode('|',$brends),
                     implode('|',$fasovkas),
                     $product->new,
                     $product->top,
                     $product->akciya,
                     $product->out_of_stock,
                    ];
            //print_r($list);
            fputcsv($handle,$list,';');
        }
        fclose($handle);
    }
    
}