使用 Propel 从另一个 table 获取信息?
Getting info from another table with Propel?
我有一个用户 table,它与另一个名为 town table 的用户有一个外键,
现在我正在尝试获取所有用户,包括他们所属城镇的名称,
$users = UserQuery::create()
->select(array('fos_user.id, fos_user.username, fos_user.email, town.name'))
->joinWith('Town')
->find();
我试过了,但由于某种原因抛出了 SELECT 执行错误。如果有人能指出我正确的方向,将不胜感激。
通过具体指定 table 我想加入的内容来解决此问题,然后传递 select 以获得我想要的字段。
$users = UserQuery::create()
->joinWith('Town')
->select(array('id','username', 'email', 'Town.name'))
->find()
->toArray();
您正在寻找的答案是 useXXXXQuery()
,但我认为这不是正确的用法。
如果您的架构正确,您可以简单地调用 $user->getTown()->getName()
或者您可以在用户模型 getTownName()
上创建一个调用上述代码的方法。
您想要使用 useXXXXQuery()
的情况是您为用户创建关于其在国外的关系的条件 table:
$users = UserQuery::create()
->filterByAge(13,Criteria::GREATER_THAN)
->filterByStatus('active')
->useTownQuery()
->filterByName('Your Town')
->endUse()
->find();
现在这是用对象来做的。如果您要处理大量数据,这可能不是一个好主意,因为它会占用大量内存。我宁愿遍历对象而不是数组。让它更干净、更简单。
我有一个用户 table,它与另一个名为 town table 的用户有一个外键,
现在我正在尝试获取所有用户,包括他们所属城镇的名称,
$users = UserQuery::create()
->select(array('fos_user.id, fos_user.username, fos_user.email, town.name'))
->joinWith('Town')
->find();
我试过了,但由于某种原因抛出了 SELECT 执行错误。如果有人能指出我正确的方向,将不胜感激。
通过具体指定 table 我想加入的内容来解决此问题,然后传递 select 以获得我想要的字段。
$users = UserQuery::create()
->joinWith('Town')
->select(array('id','username', 'email', 'Town.name'))
->find()
->toArray();
您正在寻找的答案是 useXXXXQuery()
,但我认为这不是正确的用法。
如果您的架构正确,您可以简单地调用 $user->getTown()->getName()
或者您可以在用户模型 getTownName()
上创建一个调用上述代码的方法。
您想要使用 useXXXXQuery()
的情况是您为用户创建关于其在国外的关系的条件 table:
$users = UserQuery::create()
->filterByAge(13,Criteria::GREATER_THAN)
->filterByStatus('active')
->useTownQuery()
->filterByName('Your Town')
->endUse()
->find();
现在这是用对象来做的。如果您要处理大量数据,这可能不是一个好主意,因为它会占用大量内存。我宁愿遍历对象而不是数组。让它更干净、更简单。