Hi,
ich habe hier folgendes Beispiel, leider gibt es kein Ergebnis zurück, wahrscheinlich weil DBAL nicht reines SQL zulässt?
use Doctrine\DBAL\Connection;
...
class XXXController extends StorefrontController
{
private Connection $connection;
…
public function __construct(Connection $connection) {
$this->connection = $connection;
}
...
public function (...) {
$sql = "SELECT * FROM example AS pes WHERE pes.order_id IN ($placeholders)";
$pickwareStock = $this->connection->fetchAllAssociative($sql, $orderIds);
}
}
Für ein Beispiel mit rohem SQL wäre ich sehr dankbar.
Vielen Dank für das Beispiel, jedoch funktioniert das nicht.
Irgendwie werden die Hex Werte beim umwandeln in Uuid nicht korrekt ausgeführt.
Gibt es da eine möglichkeit echtes rohes SQL zu machen anstatt dieses Verkrüppelung?
Hm?! Wieso Verkrüppelung? Shopware arbeitet mit UUIDs und für direkte SQL Abfragen müssen diese in die entsprechenden binaries übersetzt werden. Das IST „rohes“ SQL.
$orderIdsBin = Uuid::fromHexToBytesList($orderIds); // $orderIds ist ["019...","019...",...]
$pickwareStock = $this->connection->fetchAllAssociative(
"SELECT * FROM pickware_erp_stock AS pes WHERE pes.order_id IN (:orderIdsBin)",
['orderIdsBin' => $orderIdsBin],
['orderIdsBin' => ArrayParameterType::BINARY]
);
Mit Verkrüppelung meine ich, dass es viele Hinweise Im Netz gibt wie es gehen müsste. mit/ohne prepare(), mit/ohne SQL,SQL als variable, mit/ohne executeQuery() Jetzt habe ich alles ausprobiert und nur executeStatement() gibt mir eine 1…
Hi,
leider gibt es keinen Fehler.
Rückgabewert bei gettype() ist Array. count(Array) = 1, aber es ist „nichts“.
Direkt in phpmyadmin die SQL und ich erhalte ein Ergebnis.
Direkt die komplette fertige SQL reingemacht und ich bekomme nichts. > $sql = "SELECT * FROM pickware_erp_stock AS pes WHERE pes.order_id IN (UNHEX('0192d8e1941f737eb99bc43c1564870e'),UNHEX('0192d.... usw
Die Syntax ist korrekt, sonst würde MySQL einen Fehler werfen. Die Parameter sind korrekt, sonst würde doctrine einen Fehler werfen. Es werden also schlichtweg keine Datensätze gefunden.
Was ergibt ein dd($pickwareStock)? Was ergibt ein dd($pickwareStock) wenn du den WHERE Teil weglässt.
Mensch @brettvormkopp, du bist doch nun lange genug dabei. Hör doch bitte auf uns immer wieder nur stückchenweise anzufüttern und uns immer die Hälfe zu verschweigen
Welche twig Ausgabe meinst du? Was genau „ist falsch“? Wo und in welchem Zusammenhang steht dein „let pickwareStock…“?
Was du aber auf jeden Fall tun solltest, wenn du mit den Daten weiterarbeiten möchtest: am besten die binarys values direkt in der SQL Abfrage in hex zu rechnen:
SELECT LOWER(HEX(id)) AS id, location_type_technical_name, LOWER(HEX(order_id)) AS order_id …
Wie schafft es den phpmyadmin mit einer custom Query die binary in hex zu wandeln als ergebnis, wenn ich dort die gleiche Query eingebe? Wie wandeln die das um zu einem lesbaren ergebnis?