使用MY_Model

时间:2013-01-31 09:12:52

标签: php codeigniter

我正在使用Jamie Rumbelow的MY模型来更好地处理我的应用程序。

https://github.com/jamierumbelow/codeigniter-base-model

MY_model是相同的,除了我有一个添加的变量用于定义数据库中的项目是否被标记为软删除。 protected $ soft_delete_value = 3;

我只定义了该变量,并且尚未更改其代码以解释此值。

我想用这个标题模型做两件事我需要帮助理解。

Titles Table - title_id, title_name, title_status_id
Title_Statuses_Table - title_status_id, title_status_name

我想要它做的是检索title_status_id为1和2和3的所有行,因为软删除值不同于MY模型中的默认值。我还想拥有的是返回整数,而不是它返回状态的名称。

预期结果:

包含title_id,title_name,title_status_name的对象数组,其标题的状态ID为1,2或3。

测试

$titles = $this->titles_model->get_all();
echo "<pre>";
print_r($titles);
echo "</pre>"; 

实际结果:

SELECT *
FROM (`titles`)
WHERE `title_status_id` =  0

<pre>Array
(
)

我的代码

class Titles_model extends MY_Model 
{
    /* --------------------------------------------------------------
    * VARIABLES
    * ------------------------------------------------------------ */

    /**
    * This model's default database table.
    */
    public $_table = 'titles';

    public $primary_key = 'title_id';

    /**
    * Support for soft deletes and this model's 'deleted' key
    */
    public $soft_delete = TRUE;
    public $soft_delete_key = 'title_status_id';
    public $soft_delete_value = 4;
    public $_temporary_with_deleted = FALSE;

    public function __construct()
    {
        parent::__construct();
    }
}  

其他人有任何其他想法/建议吗?

编辑:

我一直试着想出这一整天,并且已经走到了尽头。

1 个答案:

答案 0 :(得分:3)

这里将是您获得预期结果所需的功能

      $this->db->select('
                titles.*,
                status.*,
                 ')
                ->join('status s', 'titles.title_status_id = s.title_status_id', 'LEFT')
                ->where('titles.title_status_id', 1)
                ->or_where('titles.title_status_id', 2)
                ->or_where('titles.title_status_id', 3)
                ->from('titles')
                ->get()
                ->result_object();