Left Join von Media inkl. Thumbnails

Ähm doofe Frage, ich hol mir die Auflösung von MediaId zu den Daten über nen Left Join in meiner Model Repo:

->leftJoin('a.coverImage', 'coverImage')

Was zu diesem Ergebnis führt:

		"coverImage": {
			"id": 801,
			"albumId": 4,
			"name": "FS_2017_Cover",
			"description": "",
			"path": "media\/image\/FS_2017_Cover.jpg",
			"type": "IMAGE",
			"extension": "jpg",
			"userId": 1,
			"created": {
				"date": "2017-07-06 00:00:00.000000",
				"timezone_type": 3,
				"timezone": "Europe\/Berlin"
			},
			"fileSize": 1439391,
			"width": 1181,
			"height": 1683
		},

gut, der Pfad ist nur virtuell. tatsächlich liegt die Datei:

vagrant@shopware:~/www/shopware/media$ find . -name "FS_2017_Cover*.jpg"
./image/73/36/ee/FS_2017_Cover_120x120.jpg
./image/11/d9/15/FS_2017_Cover_140x140.jpg
./image/b8/3a/5f/FS_2017_Cover_512x512.jpg
./image/3a/65/54/FS_2017_Cover.jpg

Nun meine Frage: Wie kann ich mir gleich die Thumbnails mitliefern lassen? Ein Thumbnail liegt unter:

media/image/73/36/ee/FS_2017_Cover_120x120.jpg

aber wenn ich es Versuch per “virtuellen pfad” aufzurufen media/image/FS_2017_Cover_120x120.jpg bekomm ich nen 404.

 

https://forum.shopware.com/search?Search=shopware_media.media_service&sLanguage=1

 

Heißt nach dem Query per Schleife jedes Thumbnail per mediaService::getUrl manuell hinzufügen? -_-

So wie in den vielen Beispielen ersichtlich vermutlich ja.

Nein es geht besser. Nutze den MediaService aus dem StoreFrontBundle und nicht den aus dem MediaBundle. Da gibt es eine Batch Funktion getList(…).

Dann einfach:

$mediaService->getList([12,14,16]); // media IDs

Da bekommst du dann MediaStructs zurück, welche gleich Thumbnails etc. enthalten. (shopware/Media.php at 5.3 · shopware/shopware · GitHub )

Viele Grüße

Auch nicht schlecht :slight_smile: Werd ich gleich mal nachschauen. Genau das was ich suchte, nur dass in deiner Antwort @simkli der zweite Parameter (Kontext) für getList fehlt.