首先我认为,与其有一个带有admin_id 和user_id 的表(没有帮助),你应该有一个带有users 和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 尝试为此在您的表中设置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