Revision 779
- Date:
- 2019/06/25 15:35:50
- Files:
Legend:
- Added
- Removed
- Modified
-
utf8/core/lib/Contenido/Object.pm
503 503 return undef if ($self->keeper->state->readonly()); 504 504 505 505 my $params = shift // {}; 506 my $store_mode = lc($params->{method} || ''); 506 my $store_mode = lc($params->{mode} || ''); 507 507 $store_mode = '' if $store_mode && !($store_mode eq 'insert' || $store_mode eq 'update'); 508 508 509 509 $self->keeper->t_connect() || do { $self->keeper->error(); return undef; }; … … 525 525 $value = undef if lc $_->{db_type} eq 'integer_ref[]' && ref $value ne 'ARRAY'; 526 526 } 527 527 528 #пропустить readonly если у документа уже есть id 529 if ($self->id() and $_->{readonly}) { 528 # выставить id, если у документа есть id и установлен режим 'insert' 529 if ($_->{db_field} eq 'id' && $store_mode eq 'insert' && $self->id()) { 530 push @fields, $_->{db_field}; 531 push @values, $value; 530 532 531 #нет поля в базе у атрибута 533 # пропустить readonly, если у документа уже есть id 534 } elsif ($store_mode ne 'insert' && $self->id() and $_->{readonly}) { 535 536 537 # нет поля в базе у атрибута 532 538 } elsif (!$_->{db_field}) { 533 539 534 #установка default если оно есть и стоит авто или нет значения у поля 540 # установка default если оно есть и стоит авто или нет значения у поля 535 541 } elsif (defined($_->{default}) and ($_->{auto} or !defined($value))) { 536 542 push @default_fields, $_->{db_field}; 537 543 push @default_values, $_->{default}; 538 544 push @default_pairs, "$_->{db_field}=$_->{default}"; 539 545 540 #пропустить auto без default 546 # пропустить auto без default 541 547 } elsif ($_->{auto}) { 542 548 543 549 #установка валидных полей … … 586 592 $values_string = join(', ', @default_pairs) if (@default_pairs); 587 593 } 588 594 my $sql='UPDATE '.$self->class_table->db_table.' SET '.$values_string." WHERE ".$self->class_table()->id_field()." = ?"; 595 warn "$sql\n" if $DEBUG; 589 596 590 597 my $sth=$self->keeper->TSQL->prepare_cached($sql, {}, 1) || return $self->t_abort(); 591 598 #settin special escape for bytea column type!!! … … 614 621 $values_string = join(', ', @default_values) if (@default_values); 615 622 } 616 623 my $sql='INSERT INTO '.$self->class_table->db_table.' ('.join(', ', (@fields, @default_fields)).') VALUES ('.$values_string.')'; 624 warn "$sql\n" if $DEBUG; 617 625 618 626 my $sth=$self->keeper->TSQL->prepare_cached($sql, {}, 1) || return $self->t_abort(); 619 627 #settin special escape for bytea column type!!!