テーブル間関係の定義ならbelongs_toでいけるようなのですが、LEFT JOIN ON ...の部分に単テーブル条件を含ませる方法が判りません。
つまり、例えば顧客の購入していない商品を商品マスタから抽出する場合、SQLですと
SELECT master.*
FROM master
LEFT JOIN purchase
ON master.id = purchase.item_id AND
purchase.user_id = 12345
WHERE purchase.user_id IS NULL
で一発で検索できますが、DBIx::Classの場合、LEFT JOIN ON ...中の、
master.id = purchase.item_id
のような条件はbelongs_toで設定できるようですが、
purchase.user_id = 12345
のような条件がどうやって設定すればいいのか判りません。
上記をWHERE句に移すと、
SELECT master.*
FROM master
LEFT JOIN purchase
ON master.id = purchase.item_id
WHERE purchase.user_id = 12345 AND purchase.user_id IS NULL
また別の意味になってしまう(検索結果なしになる)ので、困っています。
DBIx::Classで上記のようなSQLを打つ方法を教えていただければ幸いです。
コメント(0件)