Pregunta

I have this query:

SELECT * FROM `sales_order_item` WHERE `product_options` LIKE '%2010%'

With the last bit being the decoded option id, I need to find two specific option ids to use inside this query.

My problem is that I can't load the options to be decoded.

json_decode($product->getOptions());

I've tried the above and got an error stating I'm using a object when it needs to be a string.

I need to be able to get the option ids from the decode json to filter the products ordered in the database with those option values.

¿Fue útil?

Solución

Inject sales order item class in your constructor

 protected $itemFactory;
 public function __construct(
   ....
   \Magento\Sales\Model\Order\ItemFactory $itemFactory,
   ....
 ) {
    ....
    $this->itemFactory = $itemFactory;
    ....
 }

then in your function add the below code to get values from it

 try {    
    $order = $this->itemFactory->create()
              ->getCollection()
              ->addAttributeToFilter('product_options', array('like' => '%2010%'));
} catch (\Exception $e) {
    error_log($e->getMessage());
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top