Xpressengine\DynamicField\AbstractType::update PHP Method

update() public method

생성된 Dynamic Field 테이블에 데이터 수정
public update ( array $args, array $wheres ) : void
$args array parameters
$wheres array Illuminate\Database\Query\Builder's wheres attribute
return void
    public function update(array $args, array $wheres)
    {
        $config = $this->config;
        $where = $this->parseWhere($wheres);
        if (isset($where[$config->get('joinColumnName')]) === false) {
            return null;
        }
        $updateParam = [];
        foreach ($this->getColumns() as $column) {
            $key = camel_case($config->get('id') . '_' . $column->name);
            if ($config->get('required') && (isset($args[$key]) === true && $args[$key] === '')) {
                throw new Exceptions\RequiredParameterException(['name' => $key]);
            }
            if (isset($args[$key])) {
                $updateParam[$key] = $args[$key];
            }
        }
        if (count($updateParam) > 0) {
            if ($this->handler->connection()->table($this->handler->getConfigHandler()->getTableName($config))->where('dynamicFieldTargetId', '=', $where['id'])->first() != null) {
                $this->handler->connection()->table($this->handler->getConfigHandler()->getTableName($config))->where('dynamicFieldTargetId', '=', $where['id'])->update($updateParam);
            } else {
                $insertParam = $updateParam;
                $insertParam['dynamicFieldTargetId'] = $where['id'];
                $this->handler->connection()->table($this->handler->getConfigHandler()->getTableName($config))->insert($insertParam);
            }
        }
    }

Usage Example

Beispiel #1
0
 /**
  * @param ConfigEntity $config
  * @param DynamicFieldHandler $handler
  * @param array $args
  * @param array $wheres
  * @throws \Exception
  */
 public function update(array $args, array $wheres)
 {
     $config = $this->config;
     $key = $config->get('dynamicFieldName') . 'Num';
     if (isset($args[$key]) && $args[$key] !== '') {
         // 숫자만 입력 가능 하요~
         if (is_numeric($args[$key]) === false) {
             throw new \Exception();
         }
     }
     parent::update($args, $wheres);
 }