/**
  * Set conditional rules against the model.
  * @param Eloquent $model [description]
  */
 protected function setConditionalRules(\Eloquent $model)
 {
     $id = $model->getKey();
     foreach (['email', 'username'] as $field) {
         //Only use the rules if the correspoding field has been passed through.
         $this->validator->sometimes($field, $this->rules[$field] . ",{$id}", function ($input) use($model, $field) {
             //If the model already exists then we don't want to run specific validation.
             if ($model->exists) {
                 //Filter out specific rule
                 $this->validator->setRules(array_except($this->validator->getRules(), [$field]));
                 return true;
             }
             return false;
         });
     }
 }
Example #2
0
 public function isReferenced()
 {
     $id = parent::getKey();
     $hasRefrences = false;
     $def = \Config::get('database.default');
     $constraint_schema = \Config::get("database.connections.{$def}.database");
     $referenced_data = \DB::table('INFORMATION_SCHEMA.KEY_COLUMN_USAGE')->where('CONSTRAINT_SCHEMA', $constraint_schema)->where('REFERENCED_TABLE_NAME', $this->tableName)->select(array('TABLE_NAME', 'COLUMN_NAME'))->get();
     foreach ($referenced_data as $r) {
         $validator = \DB::table($r->TABLE_NAME)->select('*')->where($r->COLUMN_NAME, $id)->get();
         if (count($validator) > 0) {
             $hasRefrences = true;
             break;
         }
     }
     return $hasRefrences;
 }
 public static function createByUserAndQuiz(\Eloquent $user, QuizModel $quiz)
 {
     return static::create(array('user_id' => $user->getKey(), 'quiz_id' => $quiz->getKey(), 'token' => time() . KRandom::getRandStr(8), 'result_text' => '', 'status' => '未开始'));
 }
Example #4
0
 /**
  * @param $className
  * @param $parameters
  * @param null $objectId
  * @return ParseResponse
  * @throws \Exception
  */
 public function save($className, $parameters, $objectId = null)
 {
     $values = array();
     // if update, try to get the current object at first
     if ($objectId) {
         $this->object = $this->object->findOrFail($objectId);
     }
     foreach ($parameters as $key => $val) {
         if (in_array($key, $this->columns)) {
             if (is_array($val) && ($operation = array_get($val, '__op'))) {
                 switch ($operation) {
                     case "Increment":
                         $val = $this->object->{$key} ? $this->object->{$key} + $val['amount'] : $val['amount'];
                         break;
                     case "decrement":
                         $val = $this->object->{$key} - $val['amount'];
                         break;
                     case "Delete":
                         $val = null;
                         break;
                     case "Batch":
                         //                            $ops = $val['ops'];
                         //                            foreach ($ops as $ops_key => $ops_val) {
                         //                                if ($ops_val['__op'] == 'AddRelation') {
                         //                                    foreach ($ops_val['objects'] as $objects_key => $objects_val) {
                         //                                        $relation_type = $objects_val['__type'];
                         //                                        $relation_class_name = $objects_val['className'];
                         //                                        $relation_class_name = ParseHelperClass::removeUnderscoreFromClassName($relation_class_name);     // to remove '_' character if founded in the name of class _User
                         //                                        $relation_objectId = $objects_val['objectId'];
                         //                                        $relation_object = ParseHelperClass::createObject($relation_class_name);
                         //                                        $updatedAt = '';
                         //
                         //                                        if (!$relation_object) {
                         //                                            return ParseHelperClass::error_message_return('105');
                         //                                        }
                         //
                         //                                        $object->find($objectId)->$key()->sync([$relation_objectId], false);
                         //
                         //                                        $relation_data_of_object = $object::find(60)->$key()->where($relation_class_name . '_id',
                         //                                            '=', $relation_objectId)->get();
                         //
                         //                                        foreach ($relation_data_of_object as $relation_data) {
                         //                                            $updatedAt = $relation_data->pivot->createdAt;
                         //                                        }
                         //                                    }
                         //
                         //                                    return array(
                         //                                        "updatedAt" => Carbon::parse($updatedAt)->format('Y-m-d\TH:i:s.z\Z')
                         //                                    );
                         //                                }
                         //                            }
                         break;
                 }
             }
             $values[$key] = $val;
         } elseif (in_array($key, $this->relations)) {
             //
         } else {
             if ($key != "ACL") {
                 ParseHelper::throwException('210', $key);
             }
         }
     }
     $this->object->fill($values);
     try {
         $event = $this->object->getKey() ? 'update' : 'insert';
         \Event::fire("before.{$event}." . $this->object->getTable(), $this->object);
         $this->object->save();
         //create new object
         // now we can attach the relations
         foreach ($parameters as $key => $val) {
             if (in_array($key, $this->relations)) {
                 if ($operation = array_get($val, '__op')) {
                     switch ($operation) {
                         case "Delete":
                             $this->object->{$key}()->delete($val);
                             break;
                     }
                 } elseif ($this->object->{$key}() instanceof BelongsTo) {
                     $this->object->{$key}()->associate($val);
                 } elseif (!$this->object->{$key}() instanceof BelongsTo) {
                     $this->object->{$key}()->save($val);
                 } else {
                     ParseHelper::throwException(105);
                 }
             }
         }
         \Event::fire("after.{$event}." . $this->object->getTable(), $this->object);
     } catch (\Exception $ex) {
         ParseHelper::throwException(141, $ex->getMessage());
     }
 }