0

しかし、それはタブ[1]からのみ同じデータを返します..タブ[1]とタブ[0]から明確にデータを取得したい

$db = ConnectionManager::getDataSource('default');

$tab = $db->listSources();

        echo '<br>';
        $this->Form->useTable=$tab[1];
        print_r($this->Form->find(`all'));
        echo '<br>';
        $this->Form->use Table=$tab[0];
        print_r($this->Form->find('all'));
4

1 に答える 1

0

モデルが初期化されると、CakePHP はデータベーステーブルのスキーマをキャッシュするため、実行時の変更Model->useTableは適切に機能しません。

別のテーブルに切り替えて、キャッシュされたスキーマをクリアするには、次を使用しますModel->setSource('tablename')

ドキュメンテーション; http://api.cakephp.org/2.3/source-class-Model.html#1100-1125

例は次のようになります。

echo '<br>';
$this->Form->setSource($tab[1]);
print_r($this->Form->find(`all'));
echo '<br>';
$this->Form->setSource($tab[0]);
print_r($this->Form->find('all'));

また、debug()デバッグ用の結果出力には の代わりに を使用してくださいprint_r()。これにより、適切にフォーマットされた結果が出力されます。(debug() を機能させるには、app/Config/core.php 構成内で debug を 1 以上に設定する必要があります)

でも

モデルのソーステーブルを切り替えることは一般的に悪い習慣であり、非常に特殊なケースにのみ適用されます。データベース テーブルごとに個別のモデルを作成することを強くお勧めします

于 2013-03-14T22:16:10.067 に答える