問題定義。
複数のユーザーを持つ複数のクライアントがあります。各クライアントは、カスタム データをユーザー、検索、および順序付けに関連付けることができる必要があります。
データベース ソリューション:
customfields テーブルを定義するテーブル Customfields。IDと名前があります。これには、Userfields テーブル (別名「属性」) との has_many 関係があります。
Userfields テーブルには、userid、customfieldid、content、および id があります。これは、Useraccounts テーブル (別名「useraccount」) および Customfields (別名「customfield」) に属しています。
私が望む提案されたselectステートメント:
これは、必要なものを達成して生成する select ステートメントです。
SELECT ua.*, (
SELECT content FROM Userfields uf
INNER JOIN Customfields cf
ON cf.id = uf.customfieldid
WHERE cf.name = 'Mothers birthdate'
AND uf.uid=ua.uid
) AS 'Mothers birthdate',
(
SELECT content FROM Userfields uf
INNER JOIN Customfields cf
ON cf.id = uf.customfieldid
WHERE cf.name = 'Join Date' AND
uf.uid=ua.uid
) AS 'Join Date'
FROM UserAccounts ua
ORDER BY 'Mothers birthdate';
この場合、それらは select ステートメント内の 0 ... x サブ select ステートメントのいずれかであり、それらのいずれかまたはいずれも順序付けする必要がない可能性があります。
質問
dbix クラスの結果セットで ->search を使用してこれを達成するにはどうすればよいですか? または、dbix クラスの結果セットで検索を使用して同じ結果を得るにはどうすればよいですか?
Useraccounts テーブルから通常選択する方法は次のとおりですが、ここから必要な複雑なステートメントを実行する方法がわかりません。
my @users = $db->resultset('Useraccounts')->search(
undef,
{
page => $page,
join => 'attributes',
...
});
御時間ありがとうございます。
-pdh