view release on metacpan or search on metacpan
lib/DBIx/Class/Admin.pm view on Meta::CPAN
462463464465466467468469470471472473474475476477478479480481482=item Arguments: $rs, $set, $where
=back
update takes the name of a resultset from the schema_class, a hashref of data to update and
a where hash used to form the search for the rows to update.
=cut
sub
update {
my
(
$self
,
$rs
,
$set
,
$where
) =
@_
;
$rs
||=
$self
->resultset();
$where
||=
$self
->where();
$set
||=
$self
->set();
my
$resultset
=
$self
->schema->resultset(
$rs
);
$resultset
=
$resultset
->search( (
$where
||{}) );
my
$count
=
$resultset
->count();
"This action will modify $count "
.
ref
(
$resultset
).
" records.\n"
if
(!
$self
->quiet);
lib/DBIx/Class/CDBICompat/LazyLoading.pm view on Meta::CPAN
7891011121314151617181920212223242526sub
resultset_instance {
my
$self
=
shift
;
my
$rs
=
$self
->
next
::method(
@_
);
$rs
=
$rs
->search(
undef
, {
columns
=> [
$self
->columns(
'Essential'
) ] });
return
$rs
;
}
# Emulate that CDBI throws out all changed columns and reloads them on
# request in case the database modifies the new value (say, via a trigger)
sub
update {
my
$self
=
shift
;
my
@dirty_columns
=
keys
%{
$self
->{_dirty_columns}};
my
$ret
=
$self
->
next
::method(
@_
);
$self
->_clear_column_data(
@dirty_columns
);
return
$ret
;
}
lib/DBIx/Class/CDBICompat/Triggers.pm view on Meta::CPAN
91011121314151617181920212223242526272829
my
$self
=
shift
;
return
$self
->create(
@_
)
unless
ref
$self
;
$self
->call_trigger(
'before_create'
);
$self
->
next
::method(
@_
);
$self
->call_trigger(
'after_create'
);
return
$self
;
}
sub
update {
my
$self
=
shift
;
$self
->call_trigger(
'before_update'
);
my
@to_update
=
keys
%{
$self
->{_dirty_columns} || {}};
return
-1
unless
@to_update
;
$self
->
next
::method(
@_
);
$self
->call_trigger(
'after_update'
);
return
$self
;
}
sub
delete
{
lib/DBIx/Class/FilterColumn.pm view on Meta::CPAN
148149150151152153154155156157158159160161162163164165166167168
$self
->make_column_dirty(
$col
);
delete
$self
->{_column_data}{
$col
};
}
else
{
$self
->set_column(
$col
,
$self
->_column_to_storage(
$col
,
$filtered
));
};
return
$self
->{_filtered_column}{
$col
} =
$filtered
;
}
sub
update {
my
(
$self
,
$data
,
@rest
) =
@_
;
my
$colinfos
=
$self
->result_source->columns_info;
foreach
my
$col
(
keys
%{
$data
||{}}) {
if
(
exists
$colinfos
->{
$col
}{_filter_info} ) {
$self
->set_filtered_column(
$col
,
delete
$data
->{
$col
});
# FIXME update() reaches directly into the object-hash
# and we may *not* have a filtered value there - thus
lib/DBIx/Class/Ordered.pm view on Meta::CPAN
535536537538539540541542543544545546547548549550551552553554555=head2 update
Overrides the DBIC update() method by checking for a change
to the position and/or group columns. Movement within a
group or to another group is handled by repositioning
the appropriate siblings. Position defaults to the end
of a new group if it has been changed to undef.
=cut
sub
update {
my
$self
=
shift
;
# this is set by _ordered_internal_update()
return
$self
->
next
::method(
@_
)
if
$self
->result_source->schema->{_ORDERED_INTERNAL_UPDATE};
my
$upd
=
shift
;
$self
->set_inflated_columns(
$upd
)
if
$upd
;
my
$position_column
=
$self
->position_column;
my
@group_columns
=
$self
->_grouping_columns;
lib/DBIx/Class/Relationship/Base.pm view on Meta::CPAN
781782783784785786787788789790791792793794795796797798799800=item Return Value: L<$result|DBIx::Class::Manual::ResultClass>
=back
Update or create a result object of a related class. See
L<DBIx::Class::ResultSet/update_or_create> for details.
=cut
sub
update_or_create_related {
#my ($self, $rel, @args) = @_;
shift
->related_resultset(
shift
)->update_or_create(
@_
);
}
=head2 set_from_related
=over 4
=item Arguments: $rel_name, L<$result|DBIx::Class::Manual::ResultClass>
lib/DBIx/Class/Relationship/Base.pm view on Meta::CPAN
843844845846847848849850851852853854855856857858859860861862863=back
$book->update_from_related('author', $author_obj);
The same as L</"set_from_related">, but the changes are immediately updated
in storage.
=cut
sub
update_from_related {
my
$self
=
shift
;
$self
->set_from_related(
@_
);
$self
->update;
}
=head2 delete_related
=over 4
=item Arguments: $rel_name, $cond?, L<\%attrs?|DBIx::Class::ResultSet/ATTRIBUTES>
lib/DBIx/Class/Relationship/CascadeActions.pm view on Meta::CPAN
363738394041424344454647484950515253545556
}
}
$guard
->commit;
return
$ret
;
}
$self
->
next
::method(
@rest
);
}
sub
update {
my
(
$self
,
@rest
) =
@_
;
return
$self
->
next
::method(
@rest
)
unless
ref
$self
;
# Because update cascades on a class *really* don't make sense!
my
$source
=
$self
->result_source;
my
%rels
=
map
{
$_
=>
$source
->relationship_info(
$_
) }
$source
->relationships;
my
@cascade
=
grep
{
$rels
{
$_
}{attrs}{cascade_update} }
keys
%rels
;
if
(
@cascade
) {
my
$guard
=
$source
->schema->txn_scope_guard;
lib/DBIx/Class/ResultSet.pm view on Meta::CPAN
204320442045204620472048204920502051205220532054205520562057205820592060206120622063Note that L</update> does not process/deflate any of the
values
passed in.
This is unlike the corresponding L<DBIx::Class::Row/update>. The user must
ensure manually that any value passed to this method will stringify to
something the RDBMS knows how to deal
with
. A notable example is the
handling of L<DateTime> objects,
for
more info see:
L<DBIx::Class::Manual::Cookbook/Formatting DateTime objects in queries>.
=cut
sub update {
my ($self, $values) = @_;
$self->throw_exception('Values for update must be a hash')
unless ref $values eq 'HASH';
return $self->_rs_update_delete ('update', $values);
}
=head2 update_all
=over 4
lib/DBIx/Class/ResultSet.pm view on Meta::CPAN
20672068206920702071207220732074207520762077207820792080208120822083208420852086=item Return Value: 1
=back
Fetches all objects and updates them one at a time via
L<DBIx::Class::Row/update>. Note that C<update_all> will run DBIC defined
triggers, while L</update> will not.
=cut
sub
update_all {
my
(
$self
,
$values
) =
@_
;
$self
->throw_exception(
'Values for update_all must be a hash'
)
unless
ref
$values
eq
'HASH'
;
my
$guard
=
$self
->result_source->schema->txn_scope_guard;
$_
->update({
%$values
})
for
$self
->all;
# shallow copy - update will mangle it
$guard
->commit;
return
1;
}
lib/DBIx/Class/ResultSet.pm view on Meta::CPAN
30233024302530263027302830293030303130323033303430353036303730383039304030413042See also L</find> and L</find_or_create>. For information on how to declare
unique constraints, see L<DBIx::Class::ResultSource/add_unique_constraint>.
If you need to know
if
an existing row was updated or a new one created
use
L</update_or_new> and L<DBIx::Class::Row/in_storage> instead. Don't forget
to call L<DBIx::Class::Row/insert> to save the newly created row to the
database!
=cut
sub update_or_create {
my $self = shift;
my $attrs = (@_ > 1 && ref $_[$#_] eq 'HASH' ? pop(@_) : {});
my $cond = ref $_[0] eq 'HASH' ? shift : {@_};
my $row = $self->find($cond, $attrs);
if (defined $row) {
$row->update($cond);
return $row;
}
lib/DBIx/Class/ResultSet.pm view on Meta::CPAN
30863087308830893090309130923093309430953096309730983099310031013102310331043105B<Note>: Take care
when
using C<update_or_new>
with
a table having
columns
with
default
values
that you intend to be automatically
supplied by the database (e.g. an auto_increment primary key column).
In normal usage, the value of such columns should NOT be included at
all in the call to C<update_or_new>, even
when
set to C<
undef
>.
See also L</find>, L</find_or_create> and L</find_or_new>.
=cut
sub update_or_new {
my $self = shift;
my $attrs = ( @_ > 1 && ref $_[$#_] eq 'HASH' ? pop(@_) : {} );
my $cond = ref $_[0] eq 'HASH' ? shift : {@_};
my $row = $self->find( $cond, $attrs );
if ( defined $row ) {
$row->update($cond);
return $row;
}
lib/DBIx/Class/ResultSetProxy.pm view on Meta::CPAN
12131415161718192021222324sub
search {
shift
->resultset_instance->search(
@_
); }
sub
search_literal {
shift
->resultset_instance->search_literal(
@_
); }
sub
search_like {
shift
->resultset_instance->search_like(
@_
); }
sub
count {
shift
->resultset_instance->count(
@_
); }
sub
count_literal {
shift
->resultset_instance->count_literal(
@_
); }
sub
find {
shift
->resultset_instance->find(
@_
); }
sub
create {
shift
->resultset_instance->create(
@_
); }
sub
find_or_create {
shift
->resultset_instance->find_or_create(
@_
); }
sub
find_or_new {
shift
->resultset_instance->find_or_new(
@_
); }
sub
update_or_create {
shift
->resultset_instance->update_or_create(
@_
); }
1;
lib/DBIx/Class/Row.pm view on Meta::CPAN
533534535536537538539540541542543544545546547548549550551552553To determine
before
calling this method, which column
values
have
changed and will be updated, call L</get_dirty_columns>.
To check
if
any columns will be updated, call L</is_changed>.
To force a column to be updated, call L</make_column_dirty>
before
this method.
=cut
sub update {
my ($self, $upd) = @_;
$self->set_inflated_columns($upd) if $upd;
my %to_update = $self->get_dirty_columns
or return $self;
$self->throw_exception( "Not in database" ) unless $self->in_storage;
my $rows = $self->result_source->storage->update(
lib/DBIx/Class/Row.pm view on Meta::CPAN
133313341335133613371338133913401341134213431344134513461347134813491350135113521353=head2 insert_or_update
$obj->insert_or_update
Alias for L</update_or_insert>
=cut
sub
insert_or_update {
shift
->update_or_insert(
@_
) }
sub
update_or_insert {
my
$self
=
shift
;
return
(
$self
->in_storage ?
$self
->update :
$self
->insert);
}
=head2 is_changed
my @changed_col_names = $result->is_changed();
if ($result->is_changed()) { ... }
=over
lib/DBIx/Class/SQLMaker/MySQL.pm view on Meta::CPAN
6263646566676869707172737475767778798081
$parenthesized
=
join
' '
,
'('
,
$self
->
$force_double_subq
(
$parenthesized
),
')'
;
}
}
$new_sql
.=
$prefix
.
$parenthesized
;
}
return
$new_sql
.
$sql
;
};
sub
update {
my
$self
=
shift
;
# short-circuit unless understood identifier
return
$self
->
next
::method(
@_
)
unless
$self
->{_modification_target_referenced_re};
my
(
$sql
,
@bind
) =
$self
->
next
::method(
@_
);
$sql
=
$self
->
$force_double_subq
(
$sql
)
if
$sql
=~
$self
->{_modification_target_referenced_re};
lib/DBIx/Class/Storage.pm view on Meta::CPAN
579580581582583584585586587588589590591592593594595596597598599=cut
sub insert { die "Virtual method!" }
=head2 update
Handle an update statement.
=cut
sub
update {
die
"Virtual method!"
}
=head2 delete
Handle a delete statement.
=cut
sub
delete
{
die
"Virtual method!"
}
=head2 select_single
lib/DBIx/Class/Storage/DBI.pm view on Meta::CPAN
25612562256325642565256625672568256925702571257225732574257525762577257825792580
}
catch
{
$err
=
shift
unless
defined
$err
;
};
$self
->throw_exception(
$err
)
if
defined
$err
;
return
$count
;
}
sub
update {
#my ($self, $source, @args) = @_;
shift
->_execute(
'update'
,
@_
);
}
sub
delete
{
#my ($self, $source, @args) = @_;
shift
->_execute(
'delete'
,
@_
);
}
lib/DBIx/Class/Storage/DBI/ODBC/ACCESS.pm view on Meta::CPAN
858687888990919293949596979899100101102103104105
last
;
}
}
local
$self
->{disable_sth_caching} = 1
if
$is_image_insert
&&
$self
->disable_sth_caching_for_image_insert_or_update;
return
$self
->
next
::method(
@_
);
}
sub
update {
my
$self
=
shift
;
my
(
$source
,
$fields
) =
@_
;
my
$columns_info
=
$source
->columns_info;
my
$is_image_insert
= 0;
for
my
$col
(
keys
%$fields
) {
if
(
$self
->_is_binary_lob_type(
$columns_info
->{
$col
}{data_type})) {
$is_image_insert
= 1;
lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm view on Meta::CPAN
434435436437438439440441442443444445446447448449450451452453454
(
$identity_col
=>
$self
->last_insert_id(
$source
,
$identity_col
)) : ()),
%$to_insert
,
%$updated_cols
,
};
$self
->_insert_blobs (
$source
,
$blob_cols
,
$final_row
)
if
$blob_cols
;
return
$updated_cols
;
}
sub
update {
my
$self
=
shift
;
my
(
$source
,
$fields
,
$where
,
@rest
) =
@_
;
#
# When *updating* identities, ASE requires SET IDENTITY_UPDATE called
#
if
(
my
$blob_cols
=
$self
->_remove_blob_cols(
$source
,
$fields
)) {
# If there are any blobs in $where, Sybase will return a descriptive error
# message.