# Best Practise Datenbank Abfrage eines Plugins

**URL:** <https://forum.shopware.com/t/best-practise-datenbank-abfrage-eines-plugins/45608>\
**Category:** Programmierung\
**Created:** [5. Mai 2017 um 08:59 UTC](https://forum.shopware.com/t/best-practise-datenbank-abfrage-eines-plugins/45608 "2017-05-05T08:59:42Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![ludwigvh](https://avatars.discourse-cdn.com/v4/letter/l/cc9497/32.png) [@ludwigvh](https://forum.shopware.com/u/ludwigvh)\
**Post date:** [5. Mai 2017 um 08:59 UTC](https://forum.shopware.com/t/best-practise-datenbank-abfrage-eines-plugins/45608/1 "2017-05-05T08:59:42Z")

</div>

Hallo zusammen,

Ich suche mehr Dokumentation bzw. eine Lösung wie ich Plugin Datenbank Abfragen aus einem anderen Plugin stellen kann. Konkret will ich mit meinem Plugin (meinplugin) Daten aus einem anderen Plugin (einplugin) abfragen, welche in der Tabelle s\_plugin\_einplugin\_tabelle1 liegen. Im anderen Plugin (einplugin) gibt es auch Models für die Datenbank Einträge.

Auch ist mir der Best Practise Ansatz hierzu noch nicht klar - frage ich die Daten mittels einer SQL Abfrage ab oder lieber über einen Entity Manager?

&nbsp;

Vielen Dank schonmal im Vorraus für eure Hilfe!

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [5. Mai 2017 um 09:03 UTC](https://forum.shopware.com/t/best-practise-datenbank-abfrage-eines-plugins/45608/2 "2017-05-05T09:03:34Z")

</div>

Du kannst doch “ganz normal” über \Shopware\CustomModels\Plugin1\Model auf die models zugreifen?! Im best case würdest du im ersten Plugin in der repository des models einfach alle benötigten Methoden zur Verfügung stellen.

Viele Grüße

---

<div class="post-metadata">

**Author:** ![Patrick\_Stahl](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/patrick_stahl/32/7679_2.png) [@Patrick\_Stahl](https://forum.shopware.com/u/Patrick_Stahl)\
**Post date:** [5. Mai 2017 um 09:07 UTC](https://forum.shopware.com/t/best-practise-datenbank-abfrage-eines-plugins/45608/3 "2017-05-05T09:07:24Z")

</div>

Hallo @ludwigvh‍,

den Entity Manager vermeiden wir so gut es geht im Frontend, da dieser nicht zwangsweise die beste Performance hat.  
Nichtsdestotrotz solltest du ganz normal auf die Models des anderen Plugins zugreifen und diese nutzen können.

Am Besten nutzt du dafür allerdings die Dbal-Connection, die ebenfalls einen QueryBuilder anbietet, ähnlich dem EntityManager, jedoch deutlich performanter arbeitet.  
Alternativ ist natürlich auch Plain-SQL&nbsp;okay.

Kleines Beispiel:

```
/** @var \Doctrine\DBAL\Query\QueryBuilder $queryBuilder */
$queryBuilder = $this->get('dbal_connection')->createQueryBuilder();
$result = $queryBuilder->select('id, name')
   ->from('s_my_plugin_table', 'myPluginAlias')
   ->where('name = :exampleParam')
   ->setParameter(':exampleParam', 'TestName')
   ->execute()
   ->fetchAll();

```

Am Besten überprüfst du vorher, ob das zweite Plugin wirklich installiert ist.

Hilft dir das ggf. bereits weiter?

Gruß,  
Patrick&nbsp; ![Shopware](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/86c57fbace799dd4eb1f1b8a2d3bdc1733f0aea1.png "Shopware")

---

<div class="post-metadata">

**Author:** ![ludwigvh](https://avatars.discourse-cdn.com/v4/letter/l/cc9497/32.png) [@ludwigvh](https://forum.shopware.com/u/ludwigvh)\
**Post date:** [5. Mai 2017 um 12:04 UTC](https://forum.shopware.com/t/best-practise-datenbank-abfrage-eines-plugins/45608/4 "2017-05-05T12:04:03Z")

</div>

> [@Patrick Stahl schrieb:](https://forum.shopware.com/profile/1869/Patrick%20Stahl "Patrick%20Stahl")
> 
> den Entity Manager vermeiden wir so gut es geht im Frontend, da dieser nicht zwangsweise die beste Performance hat.  
> Nichtsdestotrotz solltest du ganz normal auf die Models des anderen Plugins zugreifen und diese nutzen können.

Wo finde ich nähere Infos wie die Models eingesetzt werden z.B. wie ich diese im Template oder innerhalb eines Plugins verwende? In diesem [Kapitel (Dev Guide / Models)](https://developers.shopware.com/developers-guide/models/) geht es ja soweit ich richtig verstanden habe lediglich um die Erstellung von Models?! Mir fehlt die Verbindung des Model Kapitels mit z.B. dem Template oder der Verwendung des Models in einem Service.

Nochmals vielen Dank für eure schnelle Hilfe!

---

<div class="post-metadata">

**Author:** ![shyim](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/shyim/32/7681_2.png) [@shyim](https://forum.shopware.com/u/shyim)\
**Post date:** [6. Mai 2017 um 12:58 UTC](https://forum.shopware.com/t/best-practise-datenbank-abfrage-eines-plugins/45608/5 "2017-05-06T12:58:59Z")

</div>

Dazu kannst du dir die Doctrine Dokumentation anschauen&nbsp;[http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/](http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/)

---

<div class="post-metadata">

**Author:** ![ludwigvh](https://avatars.discourse-cdn.com/v4/letter/l/cc9497/32.png) [@ludwigvh](https://forum.shopware.com/u/ludwigvh)\
**Post date:** [11. Mai 2017 um 15:03 UTC](https://forum.shopware.com/t/best-practise-datenbank-abfrage-eines-plugins/45608/6 "2017-05-11T15:03:18Z")

</div>

> [@Shyim schrieb:](https://forum.shopware.com/profile/20792/Shyim "Shyim")
> 
> Dazu kannst du dir die Doctrine Dokumentation anschauen&nbsp;[http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/](http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/)

Letztendlich hab ich das ganze über eine [Native Query](http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/native-sql.html) mit SQL Code abgefragt und die Daten einfach als [ScalarEntity](http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/native-sql.html#scalar-results) gemappt. Geht bestimmt auch schöner über ein richtiges Entity Mapping mit dem entsprechenden Model, dazu kenne ich mich mit den Shopware Doctrine Models noch zu wenig aus.
