# Datenbank Connection im Subscriber

**URL:** <https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415>\
**Category:** Programmierung\
**Created:** [4. Juni 2020 um 11:01 UTC](https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415 "2020-06-04T11:01:01Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![AS\_Fabian](https://avatars.discourse-cdn.com/v4/letter/a/c57346/32.png) [@AS\_Fabian](https://forum.shopware.com/u/AS_Fabian)\
**Post date:** [4. Juni 2020 um 11:01 UTC](https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415/1 "2020-06-04T11:01:01Z")

</div>

Hi,

&nbsp;

woher bekomme ich eine Datenbank Connection in einem Plugin?

---

<div class="post-metadata">

**Author:** ![ShapeAndShift](https://avatars.discourse-cdn.com/v4/letter/s/5f8ce5/32.png) [@ShapeAndShift](https://forum.shopware.com/u/ShapeAndShift)\
**Post date:** [4. Juni 2020 um 11:22 UTC](https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415/2 "2020-06-04T11:22:47Z")

</div>

Du kannst dir Doctrine\DBAL\Connection injecten.

Was willste denn machen? Normalerweise sollte alles über den DAL gehen wenn möglich.

---

<div class="post-metadata">

**Author:** ![AS\_Fabian](https://avatars.discourse-cdn.com/v4/letter/a/c57346/32.png) [@AS\_Fabian](https://forum.shopware.com/u/AS_Fabian)\
**Post date:** [4. Juni 2020 um 11:27 UTC](https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415/3 "2020-06-04T11:27:12Z")

</div>

Ich will alle Bestellung mit einem bestimmten Produkt wissen.

In dem Subscriber kann ich die Connection nicht erzeugen.

```
 $connection = $this-\>container-\>get(Connection::class); 

```

Das führt zu einem Fehler weil “container” nicht vorhanden ist.

In der Plugin Klasse geht das wiederum, da wird auch von einer anderen Klasse geerbt.

---

<div class="post-metadata">

**Author:** ![ShapeAndShift](https://avatars.discourse-cdn.com/v4/letter/s/5f8ce5/32.png) [@ShapeAndShift](https://forum.shopware.com/u/ShapeAndShift)\
**Post date:** [4. Juni 2020 um 11:44 UTC](https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415/4 "2020-06-04T11:44:29Z")

</div>

Dann nutze doch den DAL, dafür ist er da :)&nbsp;

```
$criteria = new Criteria();
$criteria->addFilter ...

```

[https://docs.shopware.com/en/shopware-platform-dev-en/how-to/reading-entities-dal](https://docs.shopware.com/en/shopware-platform-dev-en/how-to/reading-entities-dal)

---

<div class="post-metadata">

**Author:** ![AS\_Fabian](https://avatars.discourse-cdn.com/v4/letter/a/c57346/32.png) [@AS\_Fabian](https://forum.shopware.com/u/AS_Fabian)\
**Post date:** [4. Juni 2020 um 12:50 UTC](https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415/5 "2020-06-04T12:50:19Z")

</div>

$productRepository = $this-\>container-\>get(‚product.repository‘);

Das klappt nicht.

„container“ ist in der Klasse nicht vorhanden.

---

<div class="post-metadata">

**Author:** ![ShapeAndShift](https://avatars.discourse-cdn.com/v4/letter/s/5f8ce5/32.png) [@ShapeAndShift](https://forum.shopware.com/u/ShapeAndShift)\
**Post date:** [4. Juni 2020 um 12:54 UTC](https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415/6 "2020-06-04T12:54:40Z")

</div>

Schau es dir mal hier an:&nbsp;[https://github.com/Shape-and-Shift/shopware-tags/blob/master/src/Storefront/Subscriber/ShowTagsOnProductView.php](https://github.com/Shape-and-Shift/shopware-tags/blob/master/src/Storefront/Subscriber/ShowTagsOnProductView.php)

Und nicht das argument in der services.xml/yaml vergessen&nbsp;-\>&nbsp;[https://github.com/Shape-and-Shift/shopware-tags/blob/master/src/Resources/config/services.xml#L8-L10](https://github.com/Shape-and-Shift/shopware-tags/blob/master/src/Resources/config/services.xml#L8-L10)

---

<div class="post-metadata">

**Author:** ![AS\_Fabian](https://avatars.discourse-cdn.com/v4/letter/a/c57346/32.png) [@AS\_Fabian](https://forum.shopware.com/u/AS_Fabian)\
**Post date:** [4. Juni 2020 um 13:10 UTC](https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415/7 "2020-06-04T13:10:42Z")

</div>

Wir kommen der Sache schon näher. Jetzt muss ich nur noch rausfinden wie ich Bestellungen anhand einer Produkt ID bekomme.

---

<div class="post-metadata">

**Author:** ![ShapeAndShift](https://avatars.discourse-cdn.com/v4/letter/s/5f8ce5/32.png) [@ShapeAndShift](https://forum.shopware.com/u/ShapeAndShift)\
**Post date:** [4. Juni 2020 um 13:12 UTC](https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415/8 "2020-06-04T13:12:42Z")

</div>

Über das order Repository würde ich mal vermuten 😉

In der Tabelle order\_line\_item stehen alle orders mit products drin. Die musste dir holen.

---

<div class="post-metadata">

**Author:** ![AS\_Fabian](https://avatars.discourse-cdn.com/v4/letter/a/c57346/32.png) [@AS\_Fabian](https://forum.shopware.com/u/AS_Fabian)\
**Post date:** [4. Juni 2020 um 13:15 UTC](https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415/9 "2020-06-04T13:15:15Z")

</div>

Wenn ich eine normale DB Connection hätte, wäre das ganze auch kein Problem. Aber ich kenne mich mit dem Shopware Datenbank zeugs nicht aus.

---

<div class="post-metadata">

**Author:** ![mediaciety](https://avatars.discourse-cdn.com/v4/letter/m/ba9def/32.png) [@mediaciety](https://forum.shopware.com/u/mediaciety)\
**Post date:** [5. Juni 2020 um 04:19 UTC](https://forum.shopware.com/t/datenbank-connection-im-subscriber/67415/10 "2020-06-05T04:19:35Z")

</div>

anstatt des jeweiligen repositorys kannst du auch den&nbsp;ServiceContainer im Constructor deines Subscribers als Argument nutzen.

```
protected $container;

public function __construct(Container $container){
        $this->container = $container;
}

public function doSomething(){
   $connection = $this->container->get(Connection::class);

   $connection->executeQuery('SELECT * FROM irgendwas')
}

```

&nbsp;
