使用大于属性的findByAttributes()


Yii findByAttributes() with greater than attribute.

我已经使用Yii一段时间了,当我想从数据库中提取数据时,我通常只使用findByAttributes。

$model=Auction::model()->findAllByAttributes(array('status'=>'1'));

之类的。

我的问题是,我如何处理大于类型的情况?I tried

$model=Auction::model()->findAllByAttributes(array('starttime'>=$date));

where date已被分配了当前日期/时间设置,但这会导致错误。我的问题是我需要使用条件和参数吗?我应该做这种类型的东西在模型和/或使用标准或CActiveDataProvider的东西?

如果有人给我指出正确的方向,我会很感激。我总是使用findAll()s,但我知道它们是更好的方法。一些关于什么和什么时候使用属性、条件、参数等的一般信息也会很好。

我已经阅读了Yii文档,并搜索了大量的网站来寻找这些问题的答案,但我没有找到。

使用params是一个好主意,即使是findByAttributes,但那只做匹配。您可以使用findAll并添加一个条件语句,格式将与您已经做的非常相似:

$model=Auction::model()->findAll(array(
    'condition'=>'status=:status AND starttime >= :date',
    'params'=>array(':status'=>1, ':date'=>$date),
));

如果你正在做一个非常复杂的查询或以编程方式构建查询,你可能想要使用findAllBySql或CDbConnection::createCommand或查询生成器,它只是取决于什么对你的应用程序最有意义。

我会(重新)阅读Yii关于使用数据库的部分,虽然它没有大量的示例,但它非常清楚。然后你可以试试Yii Blog的教程,Larry Ullman的教程等等。

findAllByAttributes的第二个参数的类型是混合的,因此我们有(不是无限的)多种可能性,例如:

$model = Auction::model()->findAllByAttributes(
    array(
      'status' => 1
    ), 
    'starttime >= :date', 
    array(
        'date'=>$date
    )
));

$model = Auction::model()->findAllByAttributes(
    array(
      'status' => 1
    ), 
    array(
      'condition' => 'starttime >= :date'
      'params' => array('date'=>$date)
    )
));
相关文章:
  • 没有找到相关文章