2011-01-07 5 views
8

コードネイター1.7.3を使用しているフェローコーダーは、別のモデルのコードからモデルをロードできますか?私は理論的で実用的な多くの記事を読んだが、最終的な答えはなかった。別のモデルからコードシナーモデルをロードして使用する

私は別のモデルで操作を実行したい機能を持つモデルを持っています。コードは次のようになります。

1: $this->load->model('decision_model'); 
2: $this->decision_model->hello_decision(); 

line 1が動作します。次のように2行目は失敗します。私はシンプル作成しようとしたモデル/ account_model.php

:未定義のプロパティ:Account_model :: $ decision_model
ファイル名
メッセージに注意してください:

A PHPエラーが
重要度を発生しましたダムのモデル、関数名の変更、モデルのロード時にエイリアスを与えるなど... no nouck

だから、理論は別として、このdoableですか?

ありがとうございます。あなただけの別から直接、一つのモデルを呼び出すことができCI 2.0では

class User_model extends Model 
{ 
    function get_something() 
    { 
     $CI =& get_instance(); 
     $CI->load->model('profile_model'); 
     return $CI->profile_model->get_another_thing(); 
    } 
} 
+0

通常、モデルが別のモデルを参照しているとき(RDBMの外部キーを使用して)モデルを作成したいとします。この場合、元のモデルはリンクされたモデルを参照する 'decision_model'属性を持ちます。あなたがそのようなものを持っていなければ、モデルはリンクされておらず、最初のモデルから '$ this-> load'を使ってロードされたモデルを有用なものにリンクさせません。 – Guss

+0

CIをベースにしたKohanaフレームワークを見てみましょうが、このようなことが可能です。 –

+0

@Gussでは、2つのモデルがリンクされていると思われます。そのため、私は2番目のモデルにアクセスしようとしています。元のモデルで参照(クラス属性を参照していると仮定しています)がある場合、Decisionモデルを参照するためにどのように初期化しますか?ありがとう – djeetee

答えて

13

+0

ありがとう!ありがとうございます:)私は何か似たようなことをしていましたが、コードをヘルパーに移動しました。それはかなり醜いなっていた。再度、感謝します。 – djeetee

+6

CI 2.0では、あるモデルを別のモデルから直接呼び出すことができます。 – phirschybar

+0

@phischybar、あなたはこれが1.7.3であることを理解していますよね? –

0

はこれを試してみてください。

3

:あなたはこのようにそれを行うことができます

$this->load->model('decision_model'); 
$CI =& get_instance(); 
$CI->decision_model->hello_decision(); 
0

クラス変数private $_ci;を追加して、コンストラクタで初期化することもできます。

public function __construct($input=null) 
{ 
    $this->_ci =& get_instance(); 

    if ($input != null && is_array($input)) { 
     $this->populate($input); 
    } 
} 

は、その後、それはあなたがすべての場所の上に get_instance()する必要はありません、で作業しているすべての機能が利用できるようになります。

関連する問題