我需要在我的Propel查询中放置多个where
条件。最好的方法是什么?目前,我是这样做的:
$employee = EmployeeQuery::create()
->where("password = '" . $password . "' AND username = '" . $username . "'")
->find();
使用filterByXXX
函数:
$employee = EmployeeQuery::create()
->filterByUsername($username)
->filterByPassword($password)
->find();
使用基于模式中列名称的过滤方法。
该文档将有助于您彻底理解它。
模式:
<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');
就可维护的代码而言,你应该不要使用最后一个例子。使用第一个例子会有助于提高可读性。
希望对你有所帮助!