nystudio107 / craft-similar

Similar for Craft lets you find elements, Entries, Categories, Commerce Products, etc, that are similar, based on... other related elements.
https://nystudio107.com/
MIT License
26 stars 5 forks source link

[v4] Cannot use object of type craft\commerce\elements\db\ProductQuery as array #44

Closed john-henry closed 2 years ago

john-henry commented 2 years ago

Straightforward upgrade to Craft 4. I use Similar plugin for products in my Craft store on the product page

photoTags is a Tag field

{% set limitCriteria = craft.products.limit(4) %}
% set similarProductsByTags = craft.similar.find({ element: product, context: product.photoTags, criteria: limitCriteria }) %}

Throws these errors

An Error occurred while handling another error:
Error: Cannot use object of type craft\commerce\elements\db\ProductQuery as array in vendor\nystudio107\craft-similar\src\services\Similar.php:172
Stack trace:
#0 vendor\nystudio107\craft-similar\src\variables\SimilarVariable.php(35): nystudio107\similar\services\Similar->find(Array)
#1 vendor\twig\twig\src\Extension\CoreExtension.php(1607): nystudio107\similar\variables\SimilarVariable->find(Array)
#2 vendor\craftcms\cms\src\helpers\Template.php(101): twig_get_attribute(Object(craft\web\twig\Environment), Object(Twig\Source), Object(nystudio107\similar\variables\SimilarVariable), 'find', Array, 'method', false, false)
#3 storage\runtime\compiled_templates\eb\ebce07210233d93d4592fd5c6fe50009.php(260): craft\helpers\Template::attribute(Object(craft\web\twig\Environment), Object(Twig\Source), Object(nystudio107\similar\variables\SimilarVariable), 'find', Array, 'method')
#4 vendor\twig\twig\src\Template.php(171): __TwigTemplate_05d6e314b17ce3af984910954e5ec6c3->block_main(Array, Array)
#5 storage\runtime\compiled_templates\38\38566cae075d3d7e48de6df44738d199.php(113): Twig\Template->displayBlock('main', Array, Array)
#6 vendor\twig\twig\src\Template.php(394): __TwigTemplate_3ad1bfd32e2c77f936928e69e3c0817f->doDisplay(Array, Array)
#7 vendor\twig\twig\src\Template.php(367): Twig\Template->displayWithErrorHandling(Array, Array)
#8 storage\runtime\compiled_templates\eb\ebce07210233d93d4592fd5c6fe50009.php(48): Twig\Template->display(Array, Array)
#9 vendor\twig\twig\src\Template.php(394): __TwigTemplate_05d6e314b17ce3af984910954e5ec6c3->doDisplay(Array, Array)
#10 vendor\twig\twig\src\Template.php(367): Twig\Template->displayWithErrorHandling(Array, Array)
#11 vendor\twig\twig\src\Template.php(379): Twig\Template->display(Array)
#12 vendor\twig\twig\src\TemplateWrapper.php(40): Twig\Template->render(Array, Array)
#13 vendor\twig\twig\src\Environment.php(277): Twig\TemplateWrapper->render(Array)
#14 vendor\craftcms\cms\src\web\View.php(414): Twig\Environment->render('prints/_product', Array)
#15 vendor\craftcms\cms\src\web\View.php(467): craft\web\View->renderTemplate('prints/_product', Array)
#16 vendor\craftcms\cms\src\web\TemplateResponseFormatter.php(52): craft\web\View->renderPageTemplate('prints/_product', Array, 'site')
#17 vendor\yiisoft\yii2\web\Response.php(1095): craft\web\TemplateResponseFormatter->format(Object(craft\web\Response))
#18 vendor\craftcms\cms\src\web\Response.php(275): yii\web\Response->prepare()
#19 vendor\yiisoft\yii2\web\Response.php(339): craft\web\Response->prepare()
#20 vendor\yiisoft\yii2\web\ErrorHandler.php(136): yii\web\Response->send()
#21 vendor\craftcms\cms\src\web\ErrorHandler.php(185): yii\web\ErrorHandler->renderException(Object(Error))
#22 vendor\yiisoft\yii2\base\ErrorHandler.php(135): craft\web\ErrorHandler->renderException(Object(Error))
#23 vendor\craftcms\cms\src\web\ErrorHandler.php(64): yii\base\ErrorHandler->handleException(Object(Error))
#24 [internal function]: craft\web\ErrorHandler->handleException(Object(Error))
#25 {main}
Previous exception:
Error: Cannot use object of type craft\commerce\elements\db\ProductQuery as array in vendor\nystudio107\craft-similar\src\services\Similar.php:172
Stack trace:
#0 vendor\nystudio107\craft-similar\src\variables\SimilarVariable.php(35): nystudio107\similar\services\Similar->find(Array)
#1 vendor\twig\twig\src\Extension\CoreExtension.php(1607): nystudio107\similar\variables\SimilarVariable->find(Array)
#2 vendor\craftcms\cms\src\helpers\Template.php(101): twig_get_attribute(Object(craft\web\twig\Environment), Object(Twig\Source), Object(nystudio107\similar\variables\SimilarVariable), 'find', Array, 'method', false, false)
#3 storage\runtime\compiled_templates\eb\ebce07210233d93d4592fd5c6fe50009.php(260): craft\helpers\Template::attribute(Object(craft\web\twig\Environment), Object(Twig\Source), Object(nystudio107\similar\variables\SimilarVariable), 'find', Array, 'method')
#4 vendor\twig\twig\src\Template.php(171): __TwigTemplate_05d6e314b17ce3af984910954e5ec6c3->block_main(Array, Array)
#5 storage\runtime\compiled_templates\38\38566cae075d3d7e48de6df44738d199.php(113): Twig\Template->displayBlock('main', Array, Array)
#6 vendor\twig\twig\src\Template.php(394): __TwigTemplate_3ad1bfd32e2c77f936928e69e3c0817f->doDisplay(Array, Array)
#7 vendor\twig\twig\src\Template.php(367): Twig\Template->displayWithErrorHandling(Array, Array)
#8 storage\runtime\compiled_templates\eb\ebce07210233d93d4592fd5c6fe50009.php(48): Twig\Template->display(Array, Array)
#9 vendor\twig\twig\src\Template.php(394): __TwigTemplate_05d6e314b17ce3af984910954e5ec6c3->doDisplay(Array, Array)
#10 vendor\twig\twig\src\Template.php(367): Twig\Template->displayWithErrorHandling(Array, Array)
#11 vendor\twig\twig\src\Template.php(379): Twig\Template->display(Array)
#12 vendor\twig\twig\src\TemplateWrapper.php(40): Twig\Template->render(Array, Array)
#13 vendor\twig\twig\src\Environment.php(277): Twig\TemplateWrapper->render(Array)
#14 vendor\craftcms\cms\src\web\View.php(414): Twig\Environment->render('prints/_product', Array)
#15 vendor\craftcms\cms\src\web\View.php(467): craft\web\View->renderTemplate('prints/_product', Array)
#16 vendor\craftcms\cms\src\web\TemplateResponseFormatter.php(52): craft\web\View->renderPageTemplate('prints/_product', Array, 'site')
#17 vendor\yiisoft\yii2\web\Response.php(1095): craft\web\TemplateResponseFormatter->format(Object(craft\web\Response))
#18 vendor\craftcms\cms\src\web\Response.php(275): yii\web\Response->prepare()
#19 vendor\yiisoft\yii2\web\Response.php(339): craft\web\Response->prepare()
#20 vendor\yiisoft\yii2\base\Application.php(390): yii\web\Response->send()
#21 web\index.php(12): yii\base\Application->run()
#22 {main}

Versions

khalwat commented 2 years ago

Fixed in 4.0.0 -> https://github.com/nystudio107/craft-similar/releases/tag/4.0.0

john-henry commented 2 years ago

All Working. Thank you!