का उपयोग करते समय मूस ट्रिगर्स फायरिंग नहीं कर रहे हैं मैं मूस के लिए नया हूं और इसे डीबीआईएक्स :: कक्षा के साथ उपयोग करने की कोशिश कर रहा हूं। बेसिक डीबीआईसी क्वेरीिंग और काम ढूंढने को अद्यतन करता है, लेकिन जब भी मैं एक विशेषता संशोधित करता हूं तो लिखने का प्रयास करने वाला कोई भी ट्रिगर निष्पादित नहीं होता है।डीआईबीएक्स :: कक्षा
use Modern::Perl;
use Data::Dumper;
my $schema = My::Schema->connect(<connect str>, <usr>, <psw>) or die $!;
my $rs = $schema->resultset('Isin')->search(sid => 3929);
my $security_obj = $rs->first;
print $security_obj->isin, "\n";
$security_obj->isin('Test1Foo'); # <- expect to see FOO printed by trigger
print $security_obj->isin, "\n";
मुझे 'isin' प्रिंट 'फू' के लिए ट्रिगर देखने की उम्मीद है, लेकिन कुछ भी नहीं होता है। यदि मैं पैकेज से डीबीआईएक्स :: कक्षा को बाहर निकालता हूं तो ट्रिगर को अपेक्षित के रूप में निष्पादित किया जाता है।
मुझे संदेह है कि डीबीआईएक्स :: कक्षा मूल्य को इस तरह से स्थापित कर रही है जो ट्रिगर को फायरिंग से रोकती है।
दुर्भाग्यवश, मुझे मूस के साथ डीबीआईएक्स :: कक्षा का उपयोग करने के बारे में संसाधनों को खोजने में बहुत भाग्य नहीं मिला है। मैंने जो लिखा है वह ज्यादातर DBIx::Class and Moose पर मिलेगा।
क्या मैं डीबीआईएक्स :: कक्षा और/या मूस का उपयोग कर गलत हूं? क्या कोई अलग ओआरएम है जिसे मुझे मूस के साथ उपयोग करना चाहिए?
ट्रिगर है कि आग नहीं होगा के साथ पैकेज:
package My::Schema::Result::Isin;
use DBIx::Class;
use Moose;
use Carp;
extends 'DBIx::Class';
has 'isin' => (is => "rw", isa => "Str", trigger => \&_mod_isin);
has 'sid' => (is => "ro", isa => "Int");
sub _mod_isin {
print "FOO\n";
return;
};
no Moose;
__PACKAGE__->load_components('Core');
__PACKAGE__->table('isin');
__PACKAGE__->add_columns(
isin => { data_type => 'varchar2', size => 12 },
sid => { data_type => 'integer', size => 6 },
);
__PACKAGE__->set_primary_key('isin');
ऐसा लगता है कि डीबीआईसी की ऑटो-जनरेटेड विधियां मूस के ऑटो-जनरेटेड विधियों को ओवरराइट कर रही हैं। मूस का बिंदु इसे रोकने के लिए है, लेकिन यह ऐसा नहीं कर सकता है जब कुछ मूस का उपयोग नहीं करता है। शायद आप बस "चारों ओर" संशोधक चाहते हैं। – jrockway