2

アプリケーションをより適切に処理する方法として、ジェイミー・ランベロウの MY モデルを使用しています。

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

MY_model は同じですが、db 内の項目が論理的に削除されているかどうかを定義する変数が追加されている点が異なります。保護された $soft_delete_value = 3;

私はその変数を定義しただけで、この値を説明するために彼のコードをまだ変更していません。

このタイトル モデルでやりたいことが 2 つありますが、理解を助ける必要があります。

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

ソフト削除の値が MY モデルで設定されているデフォルトとは異なるため、title_status_id が 1 と 2 と 3 であるすべての行を取得する必要があります。私が望んでいるのは、整数を返す代わりに、ステータスの名前を返すことです。

予想された結果:

タイトルのステータス ID が 1、2、または 3 である title_id、title_name、title_status_name を含むオブジェクトの配列。

テスト

$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();
    }
}  

他の誰かに追加のアイデア/提案はありますか?

編集:

私は一日中これを理解しようとしてきましたが、行き止まりになりました。

4

1 に答える 1

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();
于 2013-01-31T10:22:36.843 に答える