Yii findByAttributes() 具有大于属性。

发布于 2024-12-03 02:51:38 字数 564 浏览 0 评论 0原文

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

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

或者类似的东西。

我的问题是,我将如何处理大于类型的情况?我尝试

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

将日期分配给当前日期/时间设置,但这会导致错误。所以我的问题是我是否需要使用条件和/或参数?我应该在模型中执行此类操作或者使用 Criteria 或 CActiveDataProvider 内容吗?

我很感激有人为我指出正确的方向。我一直都是通过使用 findAll() 来实现的,但我知道它们是更好的方法。关于什么以及何时使用属性、条件、参数等的一些一般信息也很好。

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

I have been using Yii for a while now and when I want to pull data from a database I generally just use a findByAttributes.

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

Or something along those lines.

My question would be, how would I handle a greater than type situation? I tried

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

where date had been assigned a current date/time setup however this causes an error. So my question is do I need to use conditions and or params? Should I do this type of thing in the model and or using the Criteria or CActiveDataProvider stuff?

I would appreciate someone pointing me in the right direction. I have always just gotten by using findAll()s but I know their is a better way to do this. Some general info on what and when to use Attributes, Conditions, Params, etc would also be nice.

I have read the Yii documentation and searched tons of sites for the answers to these questions and Im not finding it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦中的蝴蝶 2024-12-10 02:51:38

即使与 findByAttributes 一起使用 params 也是一个好主意,但这只能进行匹配。您可以使用 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 的教程等。

It's a good idea to use params even with findByAttributes, but that only does matching. You can use findAll and add a condition statement and the format would be very similar to what you are already doing:

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

If you were doing a very complex query or building a query programmatically you might want to use findAllBySql or CDbConnection::createCommand or Query Builder, it just depends on what makes the most sense for your app.

I would (re)read the Yii section on Working with Databases, while it doesn't have extensive examples, it's pretty clear. Then you can try the Yii Blog tutorial, Larry Ullman's tutorials, etc.

沉默的熊 2024-12-10 02:51:38

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

The type of the 2nd parameter of findAllByAttributes is mixed, thus we have (not infinitely but) many possibilities, for example:

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

or

$model = Auction::model()->findAllByAttributes(
    array(
      'status' => 1
    ), 
    array(
      'condition' => 'starttime >= :date'
      'params' => array('date'=>$date)
    )
));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文