2

DBIx :: Class(ローダー)ベースのORMを使用してアプリを構築しています。私のデータベースモデルのほとんどには、「名前」列があります。私のコントローラーの1つは、主に「名前」列を使用してすべてのスキーマクラスを検索します。ただし、いくつかのスキーマクラスには「名前」列がありません。

DBIx :: Classで、代わりに別の列を使用する一種の「仮想」列を追加することは可能ですか。

$resultset('Account')->search({name => 'foobar'})

密かに書き直します

$resultset('Account')->search({accountnumber => 'foobar'})

私は理にかなっていると思います、誰か?

Thx、Rob

4

1 に答える 1

1

私の知る限り、これは不可能です-とにかく検索クエリのキーとしてではありません。できることは、正しい列でこの検索を実行するメソッドなどを持つすべての結果セットクラス( load_namespacesを使用していますよね?)の基本クラスを作成することです。find_by_name列はデフォルトでnameに設定できますが、クラス属性によってオーバーライドされます。これはmk_accessorで設定できます。

この基本クラスを、 load_namespacesdefault_resultset_classの属性を持つすべての結果セットのデフォルトの結果セットクラスに設定できます。

于 2011-03-07T13:41:52.993 に答える