W Snyder wrote:
> One of my DBIx::Class table classes has:
>
> __PACKAGE__->table("adjacents");
> __PACKAGE__->add_columns(
> "child_id" => { ... },
> "parent_id" => { ... },
> );
> __PACKAGE__->set_primary_key("child_id");
> __PACKAGE__->base_has_one(parent_string => 'X::Schema::String',
> {'foreign.object_id' => 'self.parent_id'});
>
> This results in the (MySQL) creation commands
>
> CREATE TABLE `adjacents` (
> ...
> CONSTRAINT `fk_parent_id` FOREIGN KEY (`parent_id`)
> REFERENCES `strings` (`object_id`)
>
> The problem is I want to eliminate this constraint from the
> SQL creation but not from what DBIx accessors are made.
> (Because the constraint is sometimes violated, and I need to
> index it in a special way).
>
> How do I create a relationship so I can call
> $object->parent_string, but not have a CONSTRAINT added to
> the database schema?
>
Use the sqlt_deploy_hook to delete the constraint from the $table SQLT
object, just before it is handed back to DBIC. For examples of how to use
it look at the test suite file:
http://dev.catalyst.perl.org/svnweb/bast/view/DBIx-Class/0.08/trunk/t/lib/DBICTest/Schema.pm
Of course in your case you will register the hook in the Result class,
not in the Schema class.
_______________________________________________
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]