Я думаю, у вас есть первая проверка, тип данных переменной: преобразовать в объект, если тип данных является массивом:
if(is_array($this->data['row'])):
$obj = (object) $this->data['row'];
elseif(is_object($this->data['row'])):
$obj = $this->data['row'];
else:
echo "Data type not valid";
die();
endif;
$obj->product_id;
Я думаю, что это поможет вам.