#DBIxClass

Daniel Böhmerdboehmer@ieji.de
2026-01-02

@manwar What a great surprise for new year! Not my pain point exactly but certainly relevant to many users. Thanks for your contribution!

But it looks like no cursors are supported, results are neither Result/ResultSet objects and all rows are plain hashrefs. So you're missing all Result object capabilities😕 With only the search API you get only half the power of DBIC😔

Do you think you could support cursors in a future release? I think many usecases call for both async IO and cursors for looping over large datasets.

#perl #dbixclass

Taco Davedave@puz.fun
2025-11-28

I’ve been learning #CSharp and #DotNet as part of a migration project at work, and got my boss’s blessing to share some of the insights and concept-mapping I’ve done so far: itsdaves.site/2025/11/28/perl-

If you’re a dev who went from #Perl to C# or vice versa, or #Linux to #Windows or vice versa, I’d love to hear any interesting insights or tricks you’ve learned.

#Dancer2 #PerlDancer #DBIxClass #EntityFrameworkCore #PostgreSQL #SQLServer

Taco Davedave@puz.fun
2025-10-29

Question for #Perl folks using #DBIxClass and #SQLTranslator with #PostgreSQL #Postgres and/or #SQLServer #MSSQL

Is it expected that the producer for SQL server will use the data type survivor in your schema verbatim even if it’s not supported?

I’m working in an app that has a Postgres DB with jsonb columns and was hoping I could have deployment handler output SQL for SQL server that uses an acceptable equivalent, but that doesn’t seem to have been the case — it just says jsonb.

Daniel Böhmerdboehmer@ieji.de
2025-06-09

@peateasea Reading the article it looks like you need to create a PP object and then throw a resultset object at it.

Have you considered extending it that one could load it as a plugin to their resultset (base) class and call a method on any resultset object?

#dbixclass

2025-04-27

@demiguise One more thing: If you want to get more experience with #DBIxClass and how Coocook is using it you could also contribute a small task that involves DBIC.

We always have some issues open labelled with "good first issues" for beginners.
gitlab.com/coocook/coocook/-/i

In particular there’s issue #320 that’s about simply removing some old fallback which allows removing a UNIQUE constraint from the DB.
gitlab.com/coocook/coocook/-/i

If you want to give it a try I’d be glad to help you tackle this 😁

2025-04-27

@demiguise If you’re asking to “hear” something about #DBIxClass from me personally:

There’s my 14min talk about database migrations with DBIC (English slides, German talk, no English subtitles yet) from 20th German #Perl Workshop #gpw2018 online. That’s pretty much the toolset Coocook still uses today. Can’t believe this talk was already 7 years ago 🙈
youtube.com/watch?v=iWmVlDXsKF

📢 @dboehmer (that’s me 😁) is also available for hire to do DBIC talks, trainings, consulting </advertisement> 😎

2025-04-27

@demiguise I still found ORMs in other languages inferior compared to #DBIxClass. Anyway we’ve learned something since the incarnation of DBIC nearly 20 years ago. That’s why Chad Granum started DBIx-QuickORM last year. The repo hasn’t seem activity for some months now but I still hope this project will fly.
metacpan.org/dist/DBIx-QuickOR

2025-04-27

@demiguise Unfortunately though the development of #DBIxClass has stalled and there even seems to be unclarity about the project’s ownership and governance. Don’t expect new releases or even further development. This is really a sad state for a framework that I consider one of #Perl’s potential USPs 😔 DBIC is so mature that you can still use it reliably though.

2025-04-27

@demiguise Well, #DBIxClass has proven to be very stable and powerful. Most often I found a way to implement unusual queries in DBIC and there’s always a workaround possible by using custom #SQL if you give up.

For me the main benefit of using a powerful ORM like DBIC is that you can reuse DB code in OOP fashion. Our Coocook::Schema::Result[Set]:: namespace has many methods providing tiny bits that can be plugged together like building blocks. Plain SQL quickly becomes very repetitive …

Demiguise 🇮🇱demiguise@linuxrocks.online
2025-04-27

@coocook #dbixclass is just insanely cool, I started using it within a small, hobby-fiddling Dancer2 web app.

Is there a chance to hear about your experiences using it? 👀

2025-04-27

At lot has changed in the last 10 years but Coocook always has been a web application based on #Perl with #CatalystFramework and #DBIxClass. These frameworks didn’t move fast but proved to be rock solid! 💪

In the meantime we integrated other components like #Bootstrap and infrastructure like #GitLab with CI and #Docker for easier development (soon: also deployment). Fast moving #Javascript libraries have caused many more problems than the mature Perl ecosystem.

Paul Cochrane 🇪🇺peateasea
2025-04-10

I seldom release modules to mainly because there’s so much great stuff there already. An answer on StackOverflow about pretty printing DBIx::Class result sets got me thinking. I then climbed onto the shoulders of several giants to create a wee module which does just that. Introducing DBIx::Class::ResultSet::PrettyPrint!

peateasea.de/introducing-dbix-

Paul Cochrane 🇪🇺peateasea
2025-03-27

Imagine this situation: I have a Mojolicious app where the unit test suite uses DBIx::Class and DBIx::Class::Fixtures. I want to run Selenium tests with Test::Mojo::Role::Selenium, but that always points at the dev DB and not at the test DB that DBIC created.

Is it possible to tell the running Mojo app to stop using the dev DB (which I don't want to pollute with test data) and instead run with the Fixtures-built test DB (and hence use transactions I can roll back)?

Daniel Böhmerdboehmer@ieji.de
2024-10-31

Is the #DBIxClass mailing list dead? I sent an email but my mail server can’t deliver the email because connections to lists.scsys.co.uk timeout …

lists.perl.org/list/dbix-class

Unfortunately the Issues tab on GitHub for DBIC is disabled 😔
github.com/Perl5/DBIx-Class

#perl

Daniel Böhmerdboehmer@ieji.de
2024-01-03

@frew I am using your module DBIx::Class::Helper::ResultSet::IgnoreWantarray and just found it doesn’t make many_to_many() accessors ignore wantarray(). If you add such a relationship and call the accessor in list context you get Result objects.

Do you think the module should take of that?

The wantarray is here: metacpan.org/release/RIBASUSHI

I think the *$meth_name should be replaced by the *$rs_meth_name built by that code. 🤔

#perl #dbixclass

Daniel Böhmerdboehmer@ieji.de
2023-12-03

@mjgardner Main developer answering here:

Backend metacpan.org/pod/DBIx::Class:: with UI metacpan.org/pod/App::DH

Entry point in our codebase:
gitlab.com/coocook/coocook/-/b

It supports both SQL files and arbitrary script files. For example the 8→9 upgrade adds a column and converts a string for that column in #Perl:
gitlab.com/coocook/coocook/-/t

I gave an introductory talk about this at the German Perl & Raku Workshop #GPW2018. YouTube English subtitles seem to be ok:
youtube.com/watch?v=iWmVlDXsKF (13min)
#dbixclass

2023-12-02

Why we've changed our database schema 26 times until now:
- make Coocook easier to use by simplifying required input
- add new features like organizations (groups of users)
- add missing metadata like creation timestamps

Longer gaps are difficult changes that took long to prepare:
1. add database versioning in the first place
2. drop infamous table "quantities" that connected units that can be converted, like "masses" with lb and kg, etc.🙈
#perl #sql #SchemaVersioning #graph #dbixclass #dbi

Graph over time from 2015 to 2023 with "initial DB" in 2015 and versions 1 to 27 following. Longer gaps before Version 1 and between versions 24/25
Daniel Böhmerdboehmer@ieji.de
2023-11-27

@Perl I have a hard time getting this database query to work with DBIx::Class. I gave my best to describe it in a useful way. I’d very much appreciate any hints or questions:

stackoverflow.com/questions/77

#perl #dbixclass #dbi

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst