通过多个条件推动 ORM 查找
Propel ORM find by multiple conditions
我需要在推进查询中加入多个 where
条件。最好的方法是什么。现在我是这样做的:
$employee = EmployeeQuery::create()
->where("password = '" . $password . "' AND username = '" . $username . "'")
->find();
使用filterByXXX
函数:
$employee = EmployeeQuery::create()
->filterByUsername($username)
->filterByPassword($password)
->find();
使用基于架构中列名的过滤方法
The documentation有助于深入理解。
架构:
<table name="users" phpName="User" >
<column name="user_id" phpName="Id" />
<column name="user_name" phpName="Name" />
<column name="user_password" phpName="Password" />
<column name="user_address_city" phpName="City" />
</table>
查询:
$User = UserQuery::create()
->filterByName($user['name'])
->filterByPassword($user['pass'])
->filterById($user['id'])
->find();
请记住,您也可以类似地使用 ->find()
,但它是一个终止符,将 return 和对象集合
$User = UserQuery::create()->findByName($user['name']);
更有用
$User = UserQuery::create()->findById(132);
$User = UserQuery::create()->findPk(132);
FindOne() 也会像这样运行,但不会 return 一个集合,即使有多个符合条件的结果。
$User = UserQuery::create()->findOneByName($user['name']);
或组合
$u = ClientQuery::create()
->filterByName('John')
->findByCity('Orlando');
就可维护代码而言,您可能不应该使用最后一个示例。使用第一个。这将有助于提高可读性。
希望对您有所帮助!
我需要在推进查询中加入多个 where
条件。最好的方法是什么。现在我是这样做的:
$employee = EmployeeQuery::create()
->where("password = '" . $password . "' AND username = '" . $username . "'")
->find();
使用filterByXXX
函数:
$employee = EmployeeQuery::create()
->filterByUsername($username)
->filterByPassword($password)
->find();
使用基于架构中列名的过滤方法
The documentation有助于深入理解。
架构:
<table name="users" phpName="User" >
<column name="user_id" phpName="Id" />
<column name="user_name" phpName="Name" />
<column name="user_password" phpName="Password" />
<column name="user_address_city" phpName="City" />
</table>
查询:
$User = UserQuery::create()
->filterByName($user['name'])
->filterByPassword($user['pass'])
->filterById($user['id'])
->find();
请记住,您也可以类似地使用 ->find()
,但它是一个终止符,将 return 和对象集合
$User = UserQuery::create()->findByName($user['name']);
更有用
$User = UserQuery::create()->findById(132);
$User = UserQuery::create()->findPk(132);
FindOne() 也会像这样运行,但不会 return 一个集合,即使有多个符合条件的结果。
$User = UserQuery::create()->findOneByName($user['name']);
或组合
$u = ClientQuery::create()
->filterByName('John')
->findByCity('Orlando');
就可维护代码而言,您可能不应该使用最后一个示例。使用第一个。这将有助于提高可读性。
希望对您有所帮助!