首先,我认为,与其有一个带有admin_id
and的表user_id
(没有帮助),你应该有一个带有users
and的单独表privileges
,然后表结构就是。
Users privileges
| id | user | privilege_id | | id | privilege |
| 1 | user1 | 1 | | 1 | user |
| 2 | admin1 | 2 | | 2 | admin |
然后,当您在应用程序中调用用户级别时:
SELECT privilege FROM privileges WHERE id = <privilege_id from users table which should already be set within your code>
(MySQL)
为此,您应该ALWAYS
尝试在您的表中设置's,这将是您从另一个表中收集数据时关系数据的基础,因此在此示例中它将是id
the <id> field of the privileges table and the <privilege_id> of the users table.
从这里你应该能够将此方法转移到Datamapper或codeigniter或任何你的误导性标签的意思 =]
如果您需要SELECT
从数据库中进行预订,请选择booking
(制作一个额外的表格并附加如下)并查找预订的时间,((privilage_id == 1) && (privilage_id == 2))
这将查找同时存在管理员和用户的日期,而不仅仅是查看一种用户类型,您正在查看所有用户类型,并且通过调用一列而不是多列来为自己节省一些麻烦。也通过这种方式,您可以轻松管理您的表格,因为它们的名称与功能相关。
Users privileges booking
| id | user | privilege_id | | id | privilege | | id | date | privilege_id |
| 1 | user1 | 1 | | 1 | user | | 1 |5/2/13| 1 |
| 2 | admin1 | 2 | | 2 | admin | | 2 |5/2/13| 2 |
所以 MySQL 会SELECT date FROM booking WHERE ((privilege_id == 1) && (privilege_id == 2))
这样会给你你期望的结果,如果你需要清理你的数据以进入表,那么你需要在一个数据库中创建两行,这将通过这样的过程完成(这个示例将使用一个虚构的填写预订表格(并在 PHP 中完成)):
if((isset($user) && (isset($usertype)) && (isset($usertypetwo)) && (isset($date)))
{
if(($usertype != $usertypetwo))
{
"Insert BLAH BLAH"
}
}
还记得使用此方法,您需要从用户表中获取用户类型以获取privilege_id