本文整理汇总了PHP中ProductCategory::getAllByCriteria方法的典型用法代码示例。如果您正苦于以下问题:PHP ProductCategory::getAllByCriteria方法的具体用法?PHP ProductCategory::getAllByCriteria怎么用?PHP ProductCategory::getAllByCriteria使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProductCategory
的用法示例。
在下文中一共展示了ProductCategory::getAllByCriteria方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: createProduct
/**
* create product
*
* @param string $sku The sku of product
* @param string $name The name of product
* @param array $categoryPaths The category paths of product (e.g. $categories = array(array('cate2', 'cate3'), array('cate4', 'cate5', 'cate6'));
* @param string $mageProductId //TODO
* @param string $isFromB2B
* @param string $shortDescr
* @param string $fullDescr
* @param string $brandName
*
* @throws Exception
* @return string
* @soapmethod
*/
public function createProduct($sku, $name, $categoryPaths = array(), $mageProductId = '', $isFromB2B = false, $shortDescr = '', $fullDescr = '', $brandName = '')
{
$response = $this->_getResponse(UDate::now());
try {
Dao::beginTransaction();
Core::setUser(UserAccount::get(UserAccount::ID_SYSTEM_ACCOUNT));
//TODO
if (Product::getBySku(trim($sku)) instanceof Product) {
throw new Exception('sku "' . $sku . '" already exists');
}
$categories = array();
if (is_array($categoryPaths)) {
foreach ($categoryPaths as $categoryPath) {
$parentCategory = null;
foreach ($categoryPath as $categoryName) {
if (count($i = ProductCategory::getAllByCriteria('name = ?', array(trim($categoryName)), true, 1, 1)) > 0) {
$categories[$i[0]->getId()] = $category = $i[0];
} else {
$category = ProductCategory::create(trim($categoryName), trim($categoryName), $parentCategory);
$categories[$category->getId()] = $category;
}
$parentCategory = $category;
}
}
}
// create product
$product = Product::create(trim($sku), trim($name));
// TODO
foreach ($categories as $category) {
$product->addCategory($category);
}
$response['status'] = self::RESULT_CODE_SUCC;
$this->addCData('product', json_encode($product->getJson()), $response);
Dao::commitTransaction();
} catch (Exception $e) {
Dao::rollbackTransaction();
$response['status'] = self::RESULT_CODE_FAIL;
$this->addCData('error', $e->getMessage(), $response);
}
return trim($response->asXML());
}
示例2: getAllChildrenIds
/**
* Get all children for a Product Category, including grand children, grand grand children etc
*
* @return array ProductCategory
*/
public function getAllChildrenIds(&$result = null, $starting = 0)
{
if ($starting === 0) {
$starting = $this->getId();
$result = array();
} else {
$result[] = $this->getId();
}
$children = ProductCategory::getAllByCriteria('parentId = ?', array($this->getId()));
foreach ($children as $child) {
$child->getAllChildrenIds($result, $starting);
}
return array_unique($result);
}
示例3: _dataFeedImport
/**
* create/update product via datafeed.
*
* @param array $params
*
* @return array
*/
private function _dataFeedImport($params)
{
try {
Dao::beginTransaction();
$this->_runner->log('dataFeedImport: ', __CLASS__ . '::' . __FUNCTION__);
$sku = $this->_getPram($params, 'sku', null, true);
$name = $this->_getPram($params, 'name', null, true);
$shortDesc = $this->_getPram($params, 'short_description', $name);
$fullDesc = $this->_getPram($params, 'description', '');
$price = StringUtilsAbstract::getValueFromCurrency($this->_getPram($params, 'price', null, true));
$supplierName = $this->_getPram($params, 'supplier', null, true);
$supplierCode = $this->_getPram($params, 'supplier_code', null, true);
$supplier = $this->_getEntityByName($supplierName, 'Supplier');
if (!$supplier instanceof Supplier) {
throw new Exception("invalid supplier:" . $supplierName);
}
$manufacturerId = $this->_getPram($params, 'manufacturer_id', null, true);
$manufacturer = Manufacturer::get($manufacturerId);
if (!$manufacturer instanceof Manufacturer) {
throw new Exception("invalid Manufacturer:" . $manufacturerId);
}
$statusName = $this->_getPram($params, 'availability', null, true);
$status = $this->_getEntityByName($statusName, 'ProductStatus');
if (!$status instanceof ProductStatus) {
throw new Exception("invalid ProductStatus:" . $statusName);
}
$assetAccNo = $this->_getPram($params, 'assetAccNo', null);
$revenueAccNo = $this->_getPram($params, 'revenueAccNo', null);
$costAccNo = $this->_getPram($params, 'costAccNo', null);
$categoryIds = $this->_getPram($params, 'category_ids', array());
$canSupplyQty = $this->_getPram($params, 'qty', 0);
$weight = $this->_getPram($params, 'weight', 0);
$images = $this->_getPram($params, 'images', array());
$showOnWeb = $this->_getPram($params, 'showonweb', true);
$attributesetId = $this->_getPram($params, 'attributesetId', null);
$canUpdate = false;
//if we have this product already, then skip
if (!($product = Product::getBySku($sku)) instanceof Product) {
$this->_runner->log('new SKU(' . $sku . ') for import, creating ...', '', APIService::TAB);
$product = Product::create($sku, $name, '', null, null, false, $shortDesc, $fullDesc, $manufacturer, $assetAccNo, $revenueAccNo, $costAccNo, null, null, true, $weight, $attributesetId);
$this->log_product("NEW", "=== new === sku={$sku}, name={$name}, shortDesc={$shortDesc}, fullDesc={$fullDesc}, category=" . implode(', ', $categoryIds), '', APIService::TAB);
$canUpdate = true;
} else {
//$this->log_product("UPDATE", "=== update === sku=$sku, name=$name, shortDesc=$shortDesc, fullDesc=$fullDesc, category=" . implode(', ', $categoryIds), '', APIService::TAB);
//if there is no price matching rule for this product
if (($rulesCount = intval(ProductPriceMatchRule::countByCriteria('active = 1 and productId = ?', array($product->getId())))) === 0) {
$this->_runner->log('Found SKU(' . $sku . '): ', '', APIService::TAB);
$fullAsset = Asset::getAsset($product->getFullDescAssetId());
$this->_runner->log('Finding asset for full description, assetId:' . ($fullAsset instanceof Asset ? $fullAsset->getAssetId() : ''), '', APIService::TAB . APIService::TAB);
$fullAssetContent = '';
if ($fullAsset instanceof Asset) {
$fullAssetContent = file_get_contents($fullAsset->getPath());
$this->_runner->log('Got full asset content before html_decode: <' . $fullAssetContent . '>', '', APIService::TAB . APIService::TAB);
$fullAssetContent = trim(str_replace(' ', '', $fullAssetContent));
$this->_runner->log('Got full asset content after html_code: <' . $fullAssetContent . '>', '', APIService::TAB . APIService::TAB);
}
if ($fullAssetContent === '') {
$this->_runner->log('GOT BLANK FULL DESD. Updating full description.', '', APIService::TAB . APIService::TAB . APIService::TAB);
if ($fullAsset instanceof Asset) {
Asset::removeAssets(array($fullAsset->getAssetId()));
$this->_runner->log('REMOVED old empty asset for full description', '', APIService::TAB . APIService::TAB . APIService::TAB);
}
$fullAsset = Asset::registerAsset('full_description_for_product.txt', $fullDesc, Asset::TYPE_PRODUCT_DEC);
$product->setFullDescAssetId($fullAsset->getAssetId())->save();
$this->_runner->log('Added a new full description with assetId: ' . $fullAsset->getAssetId(), '', APIService::TAB . APIService::TAB);
$canUpdate = true;
$this->log_product("UPDATE", "=== updating === sku={$sku} Found ", '', APIService::TAB);
} else {
$this->log_product("SKIP", "=== SKIP updating === sku={$sku} for full description not null", '', APIService::TAB);
}
} else {
$this->_runner->log('SKIP updating. Found ProductPriceMatchRule count:' . $rulesCount, '', APIService::TAB);
$this->log_product("SKIP", "=== SKIP updating === sku={$sku} Found ProductPriceMatchRule count:{$rulesCount}", '', APIService::TAB);
}
}
$json = $product->getJson();
//only update categories and status when there is no pricematching rule or created new
if ($canUpdate === true) {
//short description, name, manufacturer
$this->_runner->log('Updating the price to: ' . StringUtilsAbstract::getCurrency($price), '', APIService::TAB . APIService::TAB);
$product->setShortDescription($shortDesc)->setName($name)->setManufacturer($manufacturer)->setWeight($weight)->setSellOnWeb($showOnWeb)->clearAllPrice()->addPrice(ProductPriceType::get(ProductPriceType::ID_RRP), $price);
//show on web
if (is_array($categoryIds) && count($categoryIds) > 0) {
$this->_runner->log('Updating the categories: ' . implode(', ', $categoryIds), '', APIService::TAB . APIService::TAB);
foreach ($categoryIds as $categoryId) {
if (!($category = ProductCategory::get($categoryId)) instanceof ProductCategory) {
continue;
}
if (count($ids = explode(ProductCategory::POSITION_SEPARATOR, trim($category->getPosition()))) > 0) {
foreach (ProductCategory::getAllByCriteria('id in (' . implode(',', $ids) . ')') as $cate) {
$product->addCategory($cate);
$this->_runner->log('Updated Category ID: ' . $cate->getId(), '', APIService::TAB . APIService::TAB . APIService::TAB);
}
//.........这里部分代码省略.........
示例4: _getCategoryJson
/**
* Getting the json for a product category
*
* @param ProductCategory $category
*
* @return multitype:multitype:NULL
*/
private function _getCategoryJson(ProductCategory $category)
{
$categoryJson = $category->getJson();
$children = array();
$categories = ProductCategory::getAllByCriteria('parentId = ?', array($category->getId()));
foreach ($categories as $cate) {
$children[] = $this->_getCategoryJson($cate);
}
$categoryJson['children'] = $children;
return $categoryJson;
}