【问题标题】:My Model (by Jamie Rumbelow) - how to use 'where' with the model我的模型(由 Jamie Rumbelow 撰写) - 如何在模型中使用“位置”
【发布时间】:2012-08-22 11:48:03
【问题描述】:

我已经集成了 Jamie Rumbelow 我的模型,用于使用来自 github 的 codeigniter 进行活动记录查询 - https://github.com/jamierumbelow/codeigniter-base-model

我想使用普通的 codeigniter 语法来执行带有多个参数的 where 但不知道如何使用标准的 codeigniter 语法,如下所示:

$this->db->where('active', 1);
$this->db->where('type', 'news');

谁能建议如何使用此 MY_Model 完成此操作?

例如...这可行,但只允许一列及其值 - 我将如何处理多列和值

$this->news_model->get_many_by('active', 1);

【问题讨论】:

  • Doh... 排序需要传递一个数组?! :)

标签: codeigniter activerecord model


【解决方案1】:

MY_Modelget_ 方法接受与 CodeIgniter 的查询构建器(以前称为 Active Record)的 where 相同的参数。这意味着你可以通过一个数组:

$this->news_model->get_many_by(array( 'key' => 'value', 'other_key' => 'value' ));

如果您正在做比这更复杂的事情,您还可以创建自己的范围方法。范围方法是在 MY_Model 中进行查找的*正确*方法。

范围方法为查找提供上下文和可读性。在您的示例中,您正在寻找活跃的新闻文章,因此我们可以在我们的模型上为这些确切的文章创建范围方法:

class News_model extends MY_Model
{
    public function active_news()
    {
        $this->db->where('active', 1);
        $this->db->where('type', 'news');

        return $this;
    }
}

由于我们返回 $this,我们可以将这些方法链接到其他 MY_Model 方法。在我们的控制器中:

$this->data['news'] = $this->news_model->active_news()->get_all();

这为我们提供了一种更难忘、更清晰、更人性化的语法。

【讨论】:

  • 杰米你真的很棒。感谢您帮助我们完成工作并学到了很多东西:D
【解决方案2】:

对它进行排序 - 对于遇到相同问题的其他人 - 你需要传递一个数组。

$this->news_model->get_many_by( 
          array('active' => 1, 'another_column'=> 'value')
        );

【讨论】:

    【解决方案3】:

    This guide has everything you need to use MY_Model - 将其视为非官方手册/文档!

    【讨论】:

    • 虽然理论上可以回答这个问题,但我们希望您在回答中包含链接文章的基本部分,并提供link for reference。如果不这样做,答案就会面临链接失效的风险。
    【解决方案4】:

    您可以针对多个条件执行类似操作并使用 LIKE 操作:

    $conditions = [
            'id' => $id
            ,'created_at LIKE' => $date.'%'
    ];
    $object = $this->model1->get_by($conditions);
    

    这将为您提供查询:

    SELECT * FROM table WHERE id = "$id" AND created_at LIKE "$date"%
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 2023-02-26
      • 2019-12-17
      • 2022-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 2019-05-12
      相关资源
      最近更新 更多