背景:基本的に、私のアプリケーションにはシェルを含むプラグインがあります。このシェルは、プラグインの Console > Command フォルダーにあります。このシェルの関数は、コマンド ラインから実行することを目的としています。
データベース構成ファイル (database.php) は、アプリケーションのルート Config フォルダーにあります。他のいくつかのインスタンスでデータベースにアクセスするので、データベースの構成に問題がないことはわかっています。
モデル データ取得メソッド (find(...) など) を使用しようとすると、次のエラーが発生します。
datasource 構成「デフォルト」が database.php に見つかりませんでした
これは、ルートの Config フォルダーではなく、プラグインの Config フォルダー内で database.php ファイルを探しているために発生しています。これは、コントローラーではなく、シェルを使用している場合にのみ発生します。
私の質問: シェルを使用している場合、自分の Config フォルダーで検索するのではなく、ルートの database.php ファイルを使用するようにプラグインに指示するにはどうすればよいですか?
繰り返しますが、プラグインは、コントローラー内のモデルからデータを取得する際にルートの Config/database.php ファイルを使用しますが、シェル内のモデルからデータを取得する際には独自の Config/database.php ファイルを使用しようとします。
私が試した2つのことはうまくいきます: 1)database.phpをプラグインのConfigフォルダーに移動し、2)シンボリックリンクを作成します。
database.php ファイルのコピーを 2 つ持ちたくないので、どちらのソリューションも受け入れられないようです。また、このアプリケーションは異なるシステム間で配布する必要がある可能性が高いため、シンボリック リンクを作成することは優れたソリューションではありません。
ありがとう。これはCakephp 2.3.6であることに言及する必要があります
回答 (user221931 に感謝):作業パスは、プラグイン パスではなく、アプリケーション パスである必要があります。プラグイン ドット表記を使用して、プラグイン シェルを実行できます。このような:
cake -app /path/to/app Plugin.shellName shellFunction
以前に間違っていた方法とは対照的に:
cake -app /path/to/app/Plugin/pluginName shellName shellFunction