问题定义。
我有多个客户和多个用户。每个客户端都需要能够将自定义数据与用户、搜索和排序依据相关联。
数据库解决方案:
定义 customfields 表的表 Customfields。它有一个 id 和 name。它与 Userfields 表(又名“属性”)有 has_many 关系。
Userfields 表有一个 userid、customfieldid、content 和 id。它属于 Useraccounts 表(又名“useraccount”)和 Customfields(又名“customfield”)
我想要的建议选择语句:
这是一个实现并产生我需要的选择语句。
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 sub select 语句中的任何内容,并且它们中的任何一个或没有一个可能想要被排序。
问题
如何通过 -> 搜索我的 dbix 类结果集来实现这一点,或者如何通过搜索我的 dbix 类结果集来实现相同的结果?
这是我通常从我的 Useraccounts 表中选择的方式,尽管我不确定如何从这里执行我想要的复杂语句。
my @users = $db->resultset('Useraccounts')->search(
undef,
{
page => $page,
join => 'attributes',
...
});
谢谢你的时间。
-pdh