本文整理汇总了PHP中ActiveRecordModel::getDataBySql方法的典型用法代码示例。如果您正苦于以下问题:PHP ActiveRecordModel::getDataBySql方法的具体用法?PHP ActiveRecordModel::getDataBySql怎么用?PHP ActiveRecordModel::getDataBySql使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ActiveRecordModel
的用法示例。
在下文中一共展示了ActiveRecordModel::getDataBySql方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: info
public function info()
{
ClassLoader::importNow("application.helper.getDateFromString");
$product = Product::getInstanceById($this->request->get('id'), ActiveRecord::LOAD_DATA, array('DefaultImage' => 'ProductImage', 'Manufacturer', 'Category'));
$thisMonth = date('m');
$lastMonth = date('Y-m', strtotime(date('m') . '/15 -1 month'));
$periods = array('_last_1_h' => "-1 hours | now", '_last_3_h' => "-3 hours | now", '_last_6_h' => "-6 hours | now", '_last_12_h' => "-12 hours | now", '_last_24_h' => "-24 hours | now", '_last_3_d' => "-3 days | now", '_this_week' => "w:Monday | now", '_last_week' => "w:Monday ~ -1 week | w:Monday", '_this_month' => $thisMonth . "/1 | now", '_last_month' => $lastMonth . "-1 | " . $lastMonth . "/1", '_this_year' => "January 1 | now", '_last_year' => "January 1 last year | January 1", '_overall' => "now | now");
$purchaseStats = array();
$prevCount = 0;
foreach ($periods as $key => $period) {
list($from, $to) = explode(' | ', $period);
$cond = new EqualsCond(new ARFieldHandle('OrderedItem', 'productID'), $product->getID());
if ('now' != $from) {
$cond->addAND(new EqualsOrMoreCond(new ARFieldHandle('CustomerOrder', 'dateCompleted'), getDateFromString($from)));
}
if ('now' != $to) {
$cond->addAnd(new EqualsOrLessCond(new ARFieldHandle('CustomerOrder', 'dateCompleted'), getDateFromString($to)));
}
$f = new ARSelectFilter($cond);
$f->mergeCondition(new EqualsCond(new ARFieldHandle('CustomerOrder', 'isFinalized'), true));
$f->removeFieldList();
$f->addField('SUM(OrderedItem.count)');
$query = new ARSelectQueryBuilder();
$query->setFilter($f);
$query->includeTable('OrderedItem');
$query->joinTable('CustomerOrder', 'OrderedItem', 'ID', 'customerOrderID');
if (($count = array_shift(array_shift(ActiveRecordModel::getDataBySql($query->getPreparedStatement(ActiveRecord::getDBConnection()))))) && ($count > $prevCount || '_overall' == $key)) {
$purchaseStats[$key] = $count;
}
if ($count > $prevCount) {
$prevCount = $count;
}
}
$response = new ActionResponse();
$response->set('together', $product->getProductsPurchasedTogether(10));
$response->set('product', $product->toArray());
$response->set('purchaseStats', $purchaseStats);
return $response;
}
示例2: updateStartAndEndDates
public function updateStartAndEndDates(CustomerOrder $previousOrder, $recurringItems)
{
// calling this more than once for same record will end with catastrophe.
// echo "\n--------------------------\n";
foreach ($recurringItems as $recurringItem) {
$recurringItemID = $recurringItem->getID();
// anyone should work, because $recurringItems should be grouped by type and length. ID is required for getting period length in calendar days (done with sql).
break;
// echo $recurringItem->getID(), "\n";
}
// find end date (first order does not have endDate)
// add one day = start date,
// find 2 end date periods
// new end date.
$data = ActiveRecordModel::getDataBySql('SELECT
TIMESTAMP(DATE( /*remove hh:mm:ss */
ADDDATE(
IF(TO_DAYS(co.endDate) IS NULL,' . self::sqlForEndDate('co.startDate') . ',
co.endDate
),
INTERVAL 1 DAY)
)) AS startDate,
' . self::sqlForEndDate('co.startDate', 2) . ' as endDate
FROM
CustomerOrder co
INNER JOIN RecurringItem ri ON ri.ID=' . $recurringItemID . '
WHERE
co.ID = ' . $previousOrder->getID());
//
if ($data && count($data) == 1) {
$data = array_shift($data);
$this->startDate->set($data['startDate']);
$this->endDate->set($data['endDate']);
return true;
}
return false;
}