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
_______________________________________________
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

Reply via email to