[Dbix-class] Differences in generated relationships

Francisco Obispo francisco at obispo.link
Thu Feb 11 15:51:52 GMT 2021


You can influence what name the relationships and tables have with a 
map,

see: 
https://metacpan.org/pod/DBIx::Class::Schema::Loader::Base#moniker_map

Me preference is to use a `dbic-conf.pl` config file with all of the 
options.

Best,

On 11 Feb 2021, at 6:45, Dave Cross wrote:

> I have a database that contains tasks and the dependencies between
> those tasks. It contains two tables:
>
> CREATE TABLE `task` (
>   `id` int(11) NOT NULL,
>   `done` tinyint(1) DEFAULT NULL,
>   `title` char(100) DEFAULT NULL,
>   PRIMARY KEY (`id`)
> )
>
> CREATE TABLE `task_dependency` (
>   `id` int(11) NOT NULL,
>   `previous_task_id` int(11) NOT NULL,
>   `next_task_id` int(11) NOT NULL,
>   PRIMARY KEY (`id`),
>   KEY `previous_task_id` (`previous_task_id`),
>   KEY `next_task_id` (`next_task_id`),
>   CONSTRAINT `task_dependency_ibfk_1` FOREIGN KEY (`previous_task_id`)
> REFERENCES `task` (`id`),
>   CONSTRAINT `task_dependency_ibfk_2` FOREIGN KEY (`next_task_id`)
> REFERENCES `task` (`id`)
> )
>
> You'll see there are two foreign keys between task_dependency and
> task. Other than the names, these columns are defined in exactly the
> same way.
>
> But when I use dbicdump to generate DBIC classes for these tables,
> there's a subtle difference in the way the relationships are named. In
> Task::Schema::Result::Task, I get the following relationships.
>
> =head1 RELATIONS
>
> =head2 task_dependencies_next_task
>
> Type: has_many
>
> Related object: L<Task::Schema::Result::TaskDependency>
>
> =cut
>
> __PACKAGE__->has_many(
>   "task_dependencies_next_task",
>   "Task::Schema::Result::TaskDependency",
>   { "foreign.next_task_id" => "self.id" },
>   { cascade_copy => 0, cascade_delete => 0 },
> );
>
> =head2 task_dependency_previous_tasks
>
> Type: has_many
>
> Related object: L<Task::Schema::Result::TaskDependency>
>
> =cut
>
> __PACKAGE__->has_many(
>   "task_dependency_previous_tasks",
>   "Task::Schema::Result::TaskDependency",
>   { "foreign.previous_task_id" => "self.id" },
>   { cascade_copy => 0, cascade_delete => 0 },
> );
>
> Note that the plurals are in different places in the relationship 
> names.
>
> task_dependencIES_next_task vs task_dependency_previous_taskS
>
> If it matters, this is a MariaDB database. And here's the config file
> I used with dbicdump:
>
> schema_class Task::Schema
>
> <connect_info>
>   dsn   dbi:mysql:dbname=test;hostname=172.17.128.1
>   user  test
>   pass  test
> </connect_info>
>
> <loader_options>
>   dump_directory        ./Testlib
>   allow_extra_m2m_cols  1
> </loader_options>
>
> I'm using DBIx::Class::Schema::Loader version 0.07049.
>
> This isn't a major problem, but I just know that I'll keep typing
> these names incorrectly :-/
>
> Is there anything I can do to fix this? Or is it expected behaviour?
>
> Cheers,
>
> Dave...
>
> _______________________________________________
> List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> Searchable Archive: 
> http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20210211/b454bf72/attachment.htm>


More information about the DBIx-Class mailing list