Zobrazení počtu stažení položek z tabulky v adminu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ricardo15
Člen | 5
+
0
-

Zdravím,
měl bych prosbu jak vyřešit v presenteru hodnotu počtu stažení z jiné tabulky?

Jednotlivé tabulky v DB:
tabulka fangates (hlavní tabulka s záznamy pro stažení)
id, name, slug, active, created, file_url, sample_packs

tabulka fangates_stats_downloads (druhá tabulka evidující jednotlivá stažení)
id, ip, created, fangates_id

<?php

namespace App\AdminModule\Presenters;

class FangatePresenter extends CrudPresenter {

    /** @inject @var \App\AdminModule\Model\Fangate */
    public $crudModel;

    public function handleRemove($id) {
        parent::handleRemove($id);

        $this->flashMessage("Fangate removed.");
        $this->redirect("default");
    }

    public function handleSwitch($id) {
        $this->crudModel->switchSamplePacks($id);

        $this->flashMessage("Swtiched.");
        $this->redirect("default");
    }

    public function createComponent($name) {
        switch ($name) {
            case "grid" :
                $grid = new \Nextras\Datagrid\Datagrid;
                $grid->addCellsTemplate(WWW_DIR . '/app/AdminModule/templates/grid/@grid.columns.latte');

                $grid->setDatasourceCallback(function($filter, $order, \Nette\Utils\Paginator $paginator = NULL) {
                    return $this->crudModel->getDataSource($paginator->length, $paginator->offset);
                });

                $grid->setPagination(20, function($wTt) {
                    $itemsCount = $this->crudModel->getCount();
                    return $itemsCount;
                });

                $grid->addColumn('name');
                $grid->addColumn('slug');
                $grid->addColumn('created');
                $grid->addColumn('sample_packs', 'Sample packs');
				$grid->addColumn('downloads');
                $grid->addColumn('delete');

                return $grid;
            default: return parent::createComponent($name);
        }
    }
}
?>

Cílem je zobrazit v adminu v kolonce u řádku (id) downloads (paměťová hodnota) počet stažení (fangates_id) z tabulky fangates_stats_downloads.

Ještě zdrojový kód pro model

<?php

namespace App\AdminModule\Model;

class Fangate extends Crud {

    public function __construct(\DibiConnection $dibi) {
        parent::__construct($dibi);

        $this->dibi = $dibi;
        $this->table = "fangates";
    }

    public function switchSamplePacks($id) {
        $stat = $this->dibi->select("sample_packs")
                ->from($this->table)
                ->where('id = %i', $id)
                ->fetchSingle();

        return $this->dibi->update($this->table, array("sample_packs" => !$stat))
              ->where('id = %i', $id)
              ->execute();
    }
}
?>

Editoval ricardo15 (3. 2. 2016 17:10)