I'm not saying that the test is incorrect. That is when a foreign key is
empty. The case that affects me is when the primary key is empty.
To use the examples below, it is like saying that a new Artist owns all
the existing CDs even though those CDs have their Artists set, until
insert is called.
Brett
Brett Gardner wrote:
I call new because I then call a method on the object which returns a
list of form controls to edit the object.
In other cases I also have to set accessors before calling the insert
method.
Jess Robinson wrote:
On Mon, 7 Jan 2008, brett gardner wrote:
The offending line is on line 793 of ResultSource.pm
$ret{$k} = $for->get_column($v) if $for->has_column_loaded($v);
That's because has_column_loaded returns true if the data is in/was
loaded from the database, you're calling new(), which doesnt insert a
new row into the database. So it's doing the correct thing.
Call create() instead. That does new() and insert().
my $undef_artist_cd = $schema->resultset("CD")->new_result({ 'title'
=> 'badgers', 'year' => 2007 });
207 is($undef_artist_cd->has_column_loaded('artist'), '', 'FK not
loaded');
208 is($undef_artist_cd->search_related('artist')->count, 3, 'open
search on undef FK');
new_result (or new) don't insert any data in the db, so this is
perfectly correct.
in 66relationship.t
brett gardner wrote:
I have a schema where there are clients who have subscribers.
So there is an object "Client" which has a has_many relationship to
"Subscriber".
If I do the following
my $client = $app->schema->resultset('Client')->find(...);
my $subscribers = $client->subscribers;
Then the relationship is correct and only pulls out the subscribers
attached to that client.
But if I do the following.
my $client = $app->schema->resultset('Client')->new({});
my $subscribers = $client->subscribers;
Then all the subscribers are pulled out which is not ideal and
potentially a very embarrassing privacy breach. Looking at the SQL
generated by "$client->subscribers" it is not putting in the
limiting where clause "WHERE me.client_id = ..."
As your row is not in the database, how would you expect it to do a
where?
Did you really miss all this, or am I misunderstanding your problem?
Jess
_______________________________________________
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]
_______________________________________________
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]
_______________________________________________
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]