Ejemplo n.º 1
0
 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]));
     }
 }
Ejemplo n.º 2
0
 /**
  * @return ModelList
  */
 public static function belongsModelList(Model $aModel)
 {
     return $aModel->data('__belongsModelList');
 }
Ejemplo n.º 3
0
 public static function rightPoint(Model $aModel)
 {
     return (int) $aModel->data('rgt');
 }
Ejemplo n.º 4
0
 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);
         }
     }
 }
Ejemplo n.º 5
0
 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;
 }