2014-10-11 21 views
6

Tôi đang cố gắng sử dụng DBIx: Lớp. Tôi đã tạo thành công lớp Schema bằng cách sử dụng DBIx: class :: Schema :: Loader.DBIx: Lớp học - không thể tìm thấy nguồn cho mô hình

Tôi cũng có thể kết nối với cơ sở dữ liệu.

#!/usr/bin/perl -w 
use Test::More tests => 5; 

use_ok('Models::ModelRole'); 
use_ok('Models::User'); 

my $model = Models::User->new(); 

cmp_ok($model->{ModelName}, 'eq', 'User', 'model name'); 

ok($model->connect(), "connect"); #works 


ok($model->{schema}->resultset('User')); 

Các thử nghiệm cuối cùng trả về thông báo lỗi:

DBIx::Class::Schema::source(): Can't find source for User at ./tests/ModelsTests.pl line 29 

Đây là cấu trúc của lớp được tạo ra từ DBIx: Class :: Schema :: Loader:

enter image description here

Đây là lớp người dùng mô hình:

package Models::User; 

use DB::Glued::Schema::Result::User; 
use Models::ModelRole; 
use Moose; 


with 'Models::ModelRole'; 


sub BUILD { 
    my $self = shift; 

    $self->{schema} = Glued::Schema::Result::User->new(); 
    my @name = split('::', __PACKAGE__); 
    $self->{ModelName} = $name[-1]; 
} 
1; 

Tôi hy vọng điều này là đủ thông tin.

Trả lời

0

Schemata/mô hình phải được kết nối với nguồn. Mã DBIC chỉ mô tả dữ liệu và các mối quan hệ của nó. Nó hoàn toàn bất khả tri về nguồn/kết nối.

Vì vậy, bạn phải kết nối DB::Glued::Schema để có thể thực hiện mô hình. Cách tốt nhất để thử nghiệm, tôi nghĩ, là để kết nối với một trong :memory: SQLite DB. Các DB sẽ được sản phẩm nào của khóa học. Có một vài lựa chọn/phương pháp tiếp cận để điền nó nếu bạn cần đồ đạc. Tìm kiếm metacpan nếu bạn làm.

Có một gói tốt đẹp để thực hiện các kết nối thử nghiệm đơn giản cho bạn: Test::DBIx::Class.

Các vấn đề liên quan