2009-07-30 10 views

答えて

5

私は推測していますが、モデルと別のモデルとの間に関係があり、関連するモデルにクラスの名前と同じでない名前を付けると、別名が割り当てられた値になる可能性があります。例えば

:その場合は

$hasMany = array('UserNew' => array('className' => 'User')); 

、あなたが実際にユーザーと呼ばれるモデルを使用しているが、あなたは「UserNew」としてそれを参照しています。

+1

$ hasMany = array( 'Friend' => array( 'className' => 'User'));より良い例になるでしょうが、あなたは正しいです。 :) 可能であれば 'alias'を使用したいと思っています。あなたが' name'があなたが扱っていると思っているオブジェクトであることを決して確信できないからです。 – deizel

0

ケーキが参加するときに使用されるテーブルエイリアスのコレクションです。

/** 
* Alias table names for model, for use in SQL JOIN statements. 
* 
* @var array 
* @access public 
*/ 
    var $alias = array(); 
0

あなたは一時的にモデル内のテーブルを変更したい、とあなたからCakePHPの魔法をオーバーライドしている場合、あなたはそれが呼ば欲しいものにの$ this - >エイリアスを変更:cake/lib/model/model_php5.phpから。 $ this-> nameはコンストラクタで使用されているようで、そのプロセスのどこかでエイリアスを構築する必要があります。上書きしたいメソッドで$ this-> nameを変更するだけでは不十分です。あなたは以下のように()の$ this - >エイリアスを変更し、メソッドsetSourceを実行する必要があります:

0
  • name
    function my_override_method(){ 
        $this->setSource('new_db_table_name_here'); 
        $this->alias = "NewTable"; 
    } 
    
    :たとえばPostのモデルの名前、。
  • alias:モデルのエイリアス。ClassRegistryにインスタンスを登録する場合に使用します。たとえば、ParentThreadです。

Model::__construct()

this質問を見てみましょう。

関連する問題