The current code uses find() to look up records with a field other than the primary key. However, find() is intended only for primary key lookups and may not work as expected with other fields. To ensure correct and future-proof behavior, replace find() with search()->next when searching by non-primary key fields. For example, use: Koha::Checkouts->search({ itemnumber => $item->itemnumber })->next; instead of: Koha::Checkouts->find({ itemnumber => $item->itemnumber }); This change improves code reliability and compatibility with possible future schema changes.
(In reply to Johanna Räisä from comment #0) > The current code uses find() to look up records with a field other than the > primary key. However, find() is intended only for primary key lookups and > may not work as expected with other fields. > To ensure correct and future-proof behavior, replace find() with > search()->next when searching by non-primary key fields. > > For example, use: > Koha::Checkouts->search({ itemnumber => $item->itemnumber })->next; > instead of: > Koha::Checkouts->find({ itemnumber => $item->itemnumber }); > This change improves code reliability and compatibility with possible future > schema changes. You are right. I made the SIP code report more reliably about empty keys, but only dealt with patron searching: ``` ILS/Patron.pm: $patron = Koha::Patrons->find_by_identifier($patron_id); ``` I believe we should implement such methods for items/checkouts to complete the work i.e. Koha::Patrons->find_by_identifier does exactly what you are suggesting.