Propel ORM通过多个条件进行查找

3

我需要在我的Propel查询中放置多个where条件。最好的方法是什么?目前,我是这样做的:

 $employee = EmployeeQuery::create()
            ->where("password = '" . $password . "' AND username = '" . $username . "'")
            ->find();
2个回答

4

使用filterByXXX函数:

$employee = EmployeeQuery::create()
           ->filterByUsername($username)
           ->filterByPassword($password)
           ->find();

3

使用基于模式中列名称的过滤方法。

该文档将有助于您彻底理解它。

模式:

<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');

就可维护的代码而言,你应该不要使用最后一个例子。使用第一个例子会有助于提高可读性。

希望对你有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接