protected function setValue(IDataSettableStatement $aStatement, $keys, $names = null, Model $aDataSource, $sTableName = null) { $keys = array_values((array) $keys); if ($names) { $names = array_values((array) $names); } else { $names = $keys; } if ($sTableName) { $sTableName = "`{$sTableName}`."; } foreach ($keys as $idx => $sKey) { $aStatement->setData("{$sTableName}`{$sKey}`", $aDataSource->data($names[$idx])); } }
/** * @return ModelList */ public static function belongsModelList(Model $aModel) { return $aModel->data('__belongsModelList'); }
public static function rightPoint(Model $aModel) { return (int) $aModel->data('rgt'); }
private function setAssociatedModelData(Model $aModel, Model $aChildModel, array $arrFromKeys, array $arrToKeys) { foreach ($arrToKeys as $nIdx => $sKey) { if ($aChildModel->isList()) { $value = $aModel->data($arrFromKeys[$nIdx]); foreach ($aChildModel->childIterator() as $aChildChildModel) { $aChildChildModel->setData($sKey, $value, false); } } else { $aChildModel->setData($sKey, $aModel->data($arrFromKeys[$nIdx]), false); } } }
public function hasExists(Model $aModel, Prototype $aPrototype = null, Select $aSelect = null, DB $aDB = null) { if (!$aPrototype) { $aPrototype = $aModel->prototype(); } if (!$aSelect) { $aSelect = $aPrototype->sharedStatementSelect(); } if (!$aDB) { $aDB = DB::singleton(); } // 备份原来的 limit $arrRawOriLimit =& $aSelect->rawClause(SQL::CLAUSE_LIMIT, false); $aSelect->criteria()->setLimit(1, 0); $aRestriction = $aSelect->where()->createRestriction(); foreach ($aPrototype->keys() as $nIdx => $sKey) { $aRestriction->expression(array(SQL::createRawColumn($aPrototype->sqlTableAlias(), $sKey), '=', SQL::transValue($aModel->data($sKey))), true, true); } // 查询 $bExists = $aDB->queryCount($aSelect) > 0; // 移除条件 $aSelect->where()->remove($aRestriction); // 还原原来的 limit $aSelect->setRawClause(SQL::CLAUSE_LIMIT, $arrRawOriLimit); return $bExists; }