2011-09-11 6 views
0

Cakephpの動作を使って基本変数の1つを設定することはできますか?私はクライアントごとに異なるテーブルが必要です。useTableを選択するCakephpの動作?

私は、セットアップ機能でそれを書くことを考えていましたが、ほとんどの変数は完全に空です。 app_controller.phpのbeforeFind()に$ this-> subdomainidを作成します。これは明らかにモデルでは使用できません。

でも、私は行動の中でuseTableを選択できますか? PHPでホスト名をチェックしてそのサブドメインをベースにすると、subdomain_tablenameをテーブルとして使用できますか?私はこのために、subdomain_recipes、subdomain_ingredients、client_というようなテーブルの命名規則と通常の命名規則を使いたいと思います。

私は現時点で3つの別々のサブドメインしか持っていませんが、異なるサブドメインのテーブルにデータを混ぜることは絶対にありません。私は数日間の解決策を考えており、一緒に考えていくことは大歓迎です!

答えて

1

あなたが同じデータベースに異なるテーブルについて話している場合は、このような何かを行うことができます。

あなたはapp_Model

で同じプレフィックス

ですべてのモデルでテーブルを変更したい場合

function __construct($id = false, $table = null, $ds = null) { 
     $prefix = getPrefix(); 
    $this->useTable = $prefix.$useTable; 
    parent::__construct($id,$table,$ds); 
} 

このように、使用する前にすべてのモデルテーブルを変更します。モデルクライアントのみを変更する場合は、クライアントモデルにこの同じ機能を追加します。 。あなたはbahaviourでそれをしたい場合はSあなたがbeforeFindを使用して同様の何かをする必要があります:あなたはすべてのものを除いたい場合は、これはしかし動作ではありませんが、それはあなたの問題を解決し、この

function __construct($id = false, $table = null, $ds = null) { 
    $prefix = getPrefix(); 
    if ($this->name != 'Client') 
     $this->useTable = $prefix.$useTable; 
    parent::__construct($id,$table,$ds); 
} 

ようapp_modelでそれを行います、beforeSaveなど(データベース内で何かをやっているすべてのビフォア)、またはモデルをロードするときにそれを行います(コントローラ内ではthis $ this-> Client-> useTable = $ prefixのようになります)$ this-> Client-> useTable ;)

getPrefix()関数は、使用するプレフィックスを示す関数であることに注意してください。

私はあなたが常にvar $ useTable = 'table'を書く必要があると思います。これが機能するには

異なるデータベースが必要な場合は、this solutionのベーカリーに投稿してください。

関連する問題