I think I have found a bug in find_or_create(), although maybe it's
more a case of "it should throw an error if you try this", instead of
silenting doing the Wrong Thing.
Viz:
Assume you have these tables:
table1, with columns "luser" and "role".
The primary key is on "luser, role".
"role" is a foreign key into table2..
table2 has columns "id" and "name".
my $rs = $schema->resultset('table1');
$rs->find_or_create(
{
luser => 'john',
role => { name => 'Admin' },
}
);
In this case, the SELECT that dbix class does to try and find the user
will be WHERE luser='john' AND role=NULL.
When it then creates the row, it will correctly fill it in with the ID
from the role table.
Eg. like:
INSERT INTO mytable (luser,role)
VALUES ('john', (SELECT id FROM role WHERE name='Admin'));
Umm.. Would you like me to try and make a (failing) test case for dbic for this?
Or am I just being stupid.. It's more than possible :)
Cheers,
Toby
_______________________________________________
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/[email protected]