[gelöst] 6. Arbeiten mit der Datenbank.. Beispiel endet in FatalError

So, nach ca. 5 Stunden noch immer kein Stück weiter…

Fest steht nun lediglich (nach manigfaltigen Errors), dass es $this unter der Klasse „Detail“ nicht gibt.

Hier kann lediglich mit „$args->“ oder „Shopware->“ gearbeitet werden…

 

Der Code zur Zeit:

 'onPostDispatchDetail'
		];
	}

	public function onPostDispatchDetail(\Enlight_Event_EventArgs $args) {
		/** @var \Shopware_Controllers_Frontend_Detail $detailController */
		$detailController = $args->getSubject();
		$view = $detailController->View();

		/** @var ModelManager $em */
		//use Shopware()->Container()->get('kernel')->getPlugins()['LoremQuestions']->getPath()."/Models" as questions;
		//$em = Shopware()->Container()->get('models');
		//$controller = $em->getRepository(Question::class);
		//$entityManager->getRepository(Question::class);
		//$em = Shopware()->Models();
		//$repository = $em->getRepository("Repository");
		//$em = $this->container->get('models');
		// $repository = $this->container->get('models')->getRepository(Question::class);
		//$repository = $em->getRepository(Question::class);
		//$repository = Shopware()->Models()->getRepository( __DIR__."/../Models");
		// $repository = Shopware()->Models()->getRepository( $this->getPath() ."/../Models");
		//$repository = Shopware()->Models()->getRepository("/../Models");
		//$em = Shopware()->Container()->get('models');
		//die("YOOOOOOOO HERE".print_r($em,true).""); //$repository = $em->getRepository(Question::class);
		// $repository = Shopware()->Models()->getRepository('Shopware\Models\Customer\Customer');
		$path = Shopware()->Container()->get('kernel')->getPlugins()['LoremQuestions']->getPath();
		$path = str_replace("/","\\",$path)."\Models\Question";
		$repository = Shopware()->Models()->getRepository($path);
		/*
		$articleId = $view->getAssign('sArticle')['articleID'];
		$query = $repository->getQuestionQuery($articleId);
		$result = $query->getArrayResult();
		*/
		$result = array();
		$view->assign('lorem_faq', $result);
	}
}

wirft folgendes Ergebnis im Frontend

Class ‚home\vagrant\www\shopware\custom\plugins\LoremQuestions\Models\Question‘ does not exist in vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php on line 96

Mit

$repository = Shopware()->Models()->getRepository("Shopware\Models\Customer");

scheint es auch zu funktionieren, jedoch nicht mit den eigens generierten Models…

 

Das funktioniert übrigends weder mit „\Models“, noch mit „\Models\Question“ oder in sonst einer Kombination…

Daraufhin hatte ich versucht die Models in „LoremQuestions.php“ erst einmal über …

$this->registerCustomModels();

… in der Funktion „install“ zu registrieren, das führt allerdings dazu, dass beim (Re-)Installieren des Plugins das Backend scheinbar nicht mehr aus dem „Installieren…“ hinausspringt und ewig weiterläuft…

 

Im Forum hatte ich ähnliche Fehlermeldungen gefunden, da hieß es lediglich „mach am Besten mal ein PHP-Update, du benutzt ja noch 5.3!“, allerdings wurde mit der Shopware-Vagrant-Box PHP 7.0.2 direkt mitinstalliert, das sollte also nicht das Problem in diesem Fall sein…

 

Ich kann doch nicht die einzige Person sein, die darüber fällt, das scheint mir ein recht fundamentales Problem zu sein :confused: