我试图通过从另一个表中检索特定参数来从名为 Faculty 的表中提取一组特定的记录。我从 sfGuard 用户那里获取 ID,然后从 ID 中检索记录。从那里我想从该表中提取部门名称,并仅显示具有该部门名称的教师记录。
这就是我的actions.class:
$userId = $this->getUser()->getGuardUser()->getId();
$userRecord = Doctrine_Query::create()
->from ('sfGuardUser s')
->where("s.id = '$userId'")
->limit('1')
->execute();
$userDept = $userRecord['department_title'];
$this->facultyAdminFind = Doctrine_Query::create()
->from ("Faculty a")
->where("a.notables LIKE ?", "%$userDept%")
->execute();
在进行了一些故障排除之后,我知道我正在从 sfGuardUser 表中提取正确的 ID 和正确的记录。我似乎无法从 sfGuardUser 记录中提取部门名称。循环什么也没有。
如果我改变 $userDept = $userRecord['department_title']; 到 $userDept = "工程";
更新以下问题:
我正在获取用户 ID,然后询问该 ID 的部门标题。我可以使用 getGuardUser() 获取 id,但不能获取 'department_title' 对吗?如果是这样,该语法会是什么样子?
我确信有一个部门名称并且没有拼写错误。我实际上是从这个 backwrds 开始验证所有被拉取的变量
首先我这样做:
$this->facultyAdminFind = Doctrine_Query::create()
->from ('sfGuardUser s')
->where("s.id = '$userId'")
->limit('1')
->execute();
它在循环中返回了正确的记录,我能够在模板中使用 $item['department_title"] 来正确调用部门标题。所以我知道我得到了正确的用户 ID 并将正确的记录调用到 $userRecord 中。
此外,在 Faculty::notables 内部有带有 Engineering 的字符串。这就是我这样做的原因:
$userDept = "Engineering";
而且我能够获得工程界所有记录的结果。
这就是我发现的有效方法:
根据 ProdigitalSon,我能够查看模型并弄清楚如何从用户表中提取部门标题。这是有效的。
$userId = $this->getUser()->getGuardUser()->getDepartmentTitle();
$this->facultyAdminFind = Doctrine_Query::create()
->from ("Faculty a")
->where("a.notables LIKE ?", "%$userId%")
->execute();
更新:
我了解到您不应该修改 sfGuard 架构,因为如果您更新插件,您将丢失专用架构。我在主模式中添加了一个新类,并在 sf_guard_user 和 department_title 之间建立了工作关联。
问题是我回到了第一方,试图从数组中获取 department_title。这是添加的架构:
MyUserProfile:
columns:
id: { type: integer, primary: true, autoincrement: true }
sf_guard_user_id: { type:integer }
department_title: { type: string(255) }
# ... other column definitions
relations:
User:
class: sfGuardUser
foreignType: one
foreignAlias: Profile
local: sf_guard_user_id
onDelete: CASCADE
这是应该工作的查询(在我的脑海中)。
//pulls department limited records for faculty admin
$userId = $this->getUser()->getGuardUser()->getId();
$usergetDept = Doctrine_Query::create()
->from('MyUserProfile d')
->where("d.sf_guard_user_id = '$userId'")
->execute();
$userDept = $usergetDept['department_title'];
$this->facultyAdminFind = Doctrine_Query::create()
->from ("Faculty a")
->where("a.notables LIKE ?", "%$userDept%")
->execute();
这是在提取每条记录,而不仅仅是具有部门标题的记录。我可以通过多重连接更轻松地做到这一点吗?