0

Cakephpの動作を使用して、基本変数の1つを設定することは可能ですか?クライアントごとに異なるテーブルが必要です。

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

しかし、動作でuseTableを選択することはできますか?PHPでホスト名を確認し、それに基づいてサブドメインを作成した場合、subdomain_tablenameをテーブルとして使用できますか?これには、subdomain_recipes、subdomain_ingredientsなどのテーブルの命名規則、つまりclient_、そして通常の命名規則を使用したいと思います。

現在、個別のサブドメインは3つしかありませんが、異なるサブドメインのテーブルにデータを混在させたくはありません。私は数日間解決策を考えていましたが、一緒に考えてみてください。

4

1 に答える 1

1

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

同じプレフィックスを持つすべてのモデルのテーブルを変更する場合

app_Modelで

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

このように、使用する前にすべてのモデルテーブルを変更します。モデルクライアントのみを変更する場合は、この同じ関数をクライアントモデルに配置します。カップルがこのモデルで同じことを行う場合は、このようにします。1つを除いてすべてが必要な場合は、このようにapp_modelで実行します

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

これは動作ではありませんが、問題は解決します:S動作で実行する場合は、beforeFind、beforeSaveなど(データベースで何かを実行する前にすべて)を使用して同様のことを実行するか、ロード時に実行する必要があります。モデル(コントローラーでは、次のようになります$ this-> Client-> useTable =$prefix。$this->Client-> useTable;)

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

常にvar$useTable='table'を作成する必要があると思います。これが機能するために。

別のデータベースが必要な場合は、パン屋でこのソリューションの投稿を試してください

于 2011-09-15T13:21:37.043 に答える