/** * Check if model's table has column * * @param \Eloquent $model * @param string $column * @return bool */ public static function hasColumn($model, $column) { $table = $model->getTable(); $columns = \Cache::remember('amigridview.columns.' . $table, 60, function () use($table) { return \Schema::getColumnListing($table); }); return array_search($column, $columns) !== false; }
/** * Retrieve table schema * @return array */ private function _getSchema() { if ($this->model && !is_null($this->model)) { $this->columns = \Schema::getColumnListing($this->model->getTable()); foreach ($this->columns as $column) { $this->schema[$column] = new FormSchema(\DB::connection()->getDoctrineColumn($this->model->getTable(), $column)); } return $this; } }
/** * Gets the picked values for the entered fields * * @param array $fields * @param Eloquent $model * @return array */ protected function getValues($fields, $model, $page) { $values = array_except($model->toArray(), ['id', 'created_at', 'updated_at', 'deleted_at']); foreach ($fields as $field) { foreach ($field->picks as $modelAttribute => $fieldAttribute) { $values[$modelAttribute] = $field->values->get($fieldAttribute, null); } } if ($this->Schema->hasColumn($model->getTable(), 'page_version_id')) { $values['page_version_id'] = $page['page_version_id']; } if ($this->Schema->hasColumn($model->getTable(), 'language_id')) { $values['language_id'] = $page['language_id']; } return $values; }
/** * @return string */ public function getTable() { return $this->model->getTable(); }
public function __construct(array $attributes = []) { parent::__construct($attributes); $this->tableName = parent::getTable(); }
/** * @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()); } }