Hallo,
auf der Suche nach etwas ganz anderem bin ich mit dem Profiler von Frosh (echt super das Plugin!!!) auf ein SQL Statement gestoßen, das so nicht funktionieren kann.
Hier der Code aus engine/Shopware/Bundle/StoreFrontBundle/Gateway/DBAL/ConfiguratorGateway ab Zeile 161:
/**
* {@inheritdoc}
*/
public function getProductCombinations(Struct\BaseProduct $product)
{
$query = $this->connection->createQueryBuilder();
$query->select([
'relations.option_id',
"GROUP_CONCAT(DISTINCT assignedRelations.option_id, '' SEPARATOR '|') as combinations",
]);
$query->from('s_article_configurator_option_relations', 'relations')
->innerJoin('relations', 's_articles_details', 'variant', 'variant.id = relations.article_id AND variant.articleID = :articleId AND variant.active = 1')
->innerJoin(
'variant',
's_articles',
'product',
'product.id = variant.articleID AND (
// Fragliche Zeile Anfang
(variant.laststock * variant.instock) >= (variant.laststock * variant.minpurchase)
// Fragliche Zeile Ende
)'
)
->leftJoin('relations', 's_article_configurator_option_relations', 'assignedRelations', 'assignedRelations.article_id = relations.article_id AND assignedRelations.option_id != relations.option_id')
->groupBy('relations.option_id')
->setParameter(':articleId', $product->getId());
/** @var \Doctrine\DBAL\Driver\ResultStatement $statement */
$statement = $query->execute();
$data = $statement->fetchAll(\PDO::FETCH_KEY_PAIR);
foreach ($data as &$row) {
$row = explode('|', $row);
}
return $data;
}
Wenn ich das richtig verstehe, wird in der Tabelle s_articles_details das Feld laststock gesucht.
Das gibt es dort jedoch nicht. Manuell in phpmyadmin ausgeführt, kommt auch die entsprechende Fehlermeldung.
Wäre hier stockmin sinnvoller?
Sollte ich das in den Issuetracker schreiben?
Gruß
Gunnar