public function testSelectsByRange() { $rangeField = 'test_id'; $tableName = 'test'; $this->_adapter->expects($this->once())->method('fetchRow')->with($this->_adapter->select()->from($tableName, [new \Zend_Db_Expr('MIN(' . $this->_adapter->quoteIdentifier($rangeField) . ') AS min'), new \Zend_Db_Expr('MAX(' . $this->_adapter->quoteIdentifier($rangeField) . ') AS max')]))->will($this->returnValue(['min' => 1, 'max' => 200])); $this->_adapter->expects($this->any())->method('quote')->will($this->returnCallback(function ($values) { if (!is_array($values)) { $values = [$values]; } foreach ($values as &$value) { $value = "'" . $value . "'"; } return implode(',', $values); })); $expectedSelect = $this->_adapter->select()->from($tableName); $result = $this->_adapter->selectsByRange($rangeField, $expectedSelect, 50); $this->assertCount(200 / 50, $result); $prepareField = $this->_adapter->quoteIdentifier($tableName) . '.' . $this->_adapter->quoteIdentifier($rangeField); $this->assertEquals($this->_adapter->select()->from($tableName)->where($prepareField . ' >= ?', 1)->where($prepareField . ' < ?', 51), $result[0]); $this->assertEquals($this->_adapter->select()->from($tableName)->where($prepareField . ' >= ?', 51)->where($prepareField . ' < ?', 101), $result[1]); $this->assertEquals($this->_adapter->select()->from($tableName)->where($prepareField . ' >= ?', 101)->where($prepareField . ' < ?', 151), $result[2]); $this->assertEquals($this->_adapter->select()->from($tableName)->where($prepareField . ' >= ?', 151)->where($prepareField . ' < ?', 201), $result[3]); }
/** * Array of SKU to array of super attribute values for all products. * * @return $this */ protected function _loadSkuSuperData() { if (!$this->_skuSuperData) { $mainTable = $this->_resource->getTableName('catalog_product_super_attribute'); $priceTable = $this->_resource->getTableName('catalog_product_super_attribute_pricing'); $select = $this->_connection->select()->from(['m' => $mainTable], ['product_id', 'attribute_id', 'product_super_attribute_id'])->joinLeft(['p' => $priceTable], $this->_connection->quoteIdentifier('p.product_super_attribute_id') . ' = ' . $this->_connection->quoteIdentifier('m.product_super_attribute_id'), ['value_index']); foreach ($this->_connection->fetchAll($select) as $row) { $attrId = $row['attribute_id']; $productId = $row['product_id']; if ($row['value_index']) { $this->_skuSuperData[$productId][$attrId][$row['value_index']] = true; } $this->_productSuperAttrs["{$productId}_{$attrId}"] = $row['product_super_attribute_id']; } } return $this; }
/** * Retrieve table header comment * * @param string $tableName * @return string */ public function getTableHeader($tableName) { $quotedTableName = $this->_write->quoteIdentifier($tableName); return "\n--\n" . "-- Table structure for table {$quotedTableName}\n" . "--\n\n"; }