/** * 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; }); } }
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' => '未开始')); }
/** * @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()); } }