Whoever looked at the Magento source code or database in the context of orders, probably encountered the parameter $buyRequest
in many methods or the option info_buyRequest
in quote items and order items. Its purpose is not immediately obvious since it contains seemingly redundant information. Also it does not have its own model class, it’s just a Varien_Object
and a serialized array when stored to the database.
Example:
mysql> select code,value from sales_flat_quote_item_option where option_id=2359;
+-----------------+------------------------------------------------------------------------------------------------------------+
| code | value |
+-----------------+------------------------------------------------------------------------------------------------------------+
| info_buyRequest | a:4:{s:4:"uenc";s:140:"[...],,";s:7:"product";s:4:"5000";s:15:"related_product";s:0:"";s:3:"qty";s:1:"1";} |
+-----------------+------------------------------------------------------------------------------------------------------------+
In short: The $buyRequest
object represents the customer request coming from a click on “Add to cart”, all related data can be derived from this object. It’s basically a generator for quote items. The minimal necessary data is thus the product id (product
) and quantity (qty
).
Where is the $buyRequest object needed?
For example it is created when you add a product to the wishlist, so that it can easily be transfered to the cart with the same configuration. When reconfiguring a product, i.e. editing it from the cart, the buyRequest is passed to the product view to preselect all options.
Also for recurring profiles and reordering the buyRequest objects get “reused” to generate a new order.
Use Cases
Some examples, when it is useful to deal with the buyRequest: