Propojení tabulek 1:N pro NiftyGrid

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

Zdravím, začínám být už zoufalý a proto se obracím zde. Potřebuji propojit dvě tabulky a vypsat je, ale za ani za nic se mi to nedaří.

Mám dvě tabulky:

CREATE TABLE IF NOT EXISTS `product` (
  `prod_id` int(11) NOT NULL AUTO_INCREMENT,
  `prod_name` varchar(45) NOT NULL,
  `prod_producer` varchar(45) DEFAULT NULL,
  `prod_price` int(11) NOT NULL,
  `prod_code` varchar(11) DEFAULT NULL,
  `prod_describe` varchar(255) DEFAULT NULL,
  `prod_long_describe` text,
  `prod_isnew` tinyint(1) NOT NULL DEFAULT '0',
  `prod_on_stock` int(11) NOT NULL DEFAULT '0',
  `prod_is_active` tinyint(1) NOT NULL DEFAULT '1',
  `total_votes` int(11) NOT NULL DEFAULT '0',
  `total_value` int(11) NOT NULL DEFAULT '0',
  `used_ips` longtext,
  PRIMARY KEY (`prod_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;
CREATE TABLE IF NOT EXISTS `image` (
  `image_id` int(11) NOT NULL AUTO_INCREMENT,
  `product_prod_id` int(11) NOT NULL,
  `image_name` varchar(255) NOT NULL,
  `image_is_main` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`image_id`,`product_prod_id`),
  KEY `fk_image_product` (`product_prod_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=39 ;

A omezení mezi nimi:

ALTER TABLE `product`
  ADD CONSTRAINT `product_ibfk_1` FOREIGN KEY (`prod_id`) REFERENCES `image` (`product_prod_id`) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE `image`
  ADD CONSTRAINT `image_ibfk_1` FOREIGN KEY (`product_prod_id`) REFERENCES `product` (`prod_id`) ON DELETE CASCADE ON UPDATE CASCADE;

Když využívám tento sql kód jako výpis v šabloně, tak mi to jede v pohodě:

return $this->connection->table($this->image)
                ->where('image.image_is_main = 1')
                ->group('image.product_prod_id')

Když ale do NiftyGridu jako source hodím tento kód:

return $this->connection->table($this->image)
        ->select('image_id');

Tak mi to vyhodí chybu

No reference found for $image->.

Nevíte někdo v čem dělám chybu? Potřeboval bych v tabulce vypsat jak název produktu tak i název obrázku. Zkoušel jsem i vytvořit pohled, ale vyhodilo mi to opět podobnou chybu

No reference found for $vwproduct->.
thorewi
Člen | 84
+
0
-

nevim jakou verzi nifty gridu pouzivas, ale zkusil jsem si vzit tvoje tabulky a data do niftygridu nacpat takto:

$this->setDataSource(
	new \NiftyGrid\DataSource\NDataSource(
		$this->connection->table('image')->select('image_id')
	)
);

a funguje to…