我需要在我的推进查询中添加多个where
条件。什么是最好的方法。现在我这样做:
$employee = EmployeeQuery::create()
->where("password = '" . $password . "' AND username = '" . $username . "'")
->find();
答案 0 :(得分:3)
根据架构中的列名称使用过滤器方法
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()
,但它是终结者并将返回和对象集合
$User = UserQuery::create()->findByName($user['name']);
对
更有用$User = UserQuery::create()->findById(132);
$User = UserQuery::create()->findPk(132);
FindOne()也会表现得像这样但不会返回集合,即使有多个条件的结果也是如此。
$User = UserQuery::create()->findOneByName($user['name']);
或组合
$u = ClientQuery::create()
->filterByName('John')
->findByCity('Orlando');
就可维护代码而言,您可能不应该使用最后一个示例。使用第一个。它有助于提高可读性。
希望它有所帮助!答案 1 :(得分:2)
使用filterByXXX
功能:
$employee = EmployeeQuery::create()
->filterByUsername($username)
->filterByPassword($password)
->find();