歴史的な理由から、別のテーブルの ID に対応するテキスト フィールドに整数値を持つ作業中のテーブルがあります。例:
CREATE TABLE things (
id INTEGER,
name VARCHAR,
thingy VARCHAR
);
CREATE TABLE other_things (
id INTEGER,
name VARCHAR,
);
したがって、「もの」には 1 つの「他のもの」がありますが、適切に設定されるのではなく、join フィールドは varchar であり、「thingy」と呼ばれます。
Postgres では、次のようにして 2 つのテーブルを結合できます。
SELECT t.id, t.name, ot.name FROM things t
JOIN other_things ot ON CAST(t.thingy AS int) = ot.id
DBIx::Class でこの関係をどのように表すことができますか? これが私が試したことの1つの例です:
package MySchema::Thing;
__PACKAGE__->has_one(
'other_thing',
'MySchema::OtherThing',
{ 'foreign.id' => 'CAST(self.thingy AS int)' },
);