CakePHPではsrc/Commandディレクトリ下にコンソールコマンドを追加することができます。 データベースの特定のレコードの数を数えたり、レコードの中のあるステータスを条件に応じて一括で変更するなどといった操作に有効です。
以下、引数にidをとり、そのレコードのうち、nameというカラムを出力するコマンドを書いていきたいと思います。
namespace App\Command; use Cake\Console\Arguments; use Cake\Console\Command; use Cake\Console\ConsoleIo; use Cake\Console\ConsoleOptionParser; use Cake\ORM\TableRegistry; class CallIdCommand extends Command { protected function buildOptionParser(ConsoleOptionParser $parser) { $parser = parent::buildOptionParser($parser); $parser->addArgument("id", [ // id をArgumentsに指定 'help' => "article id", 'required' => true ]); return $parser; } public function execute(Arguments $args, ConsoleIo $io) { $id = $args->getArgument('id'); $client = TableRegistry::getTableLocator()->get("Clients")->get($id); // argsに渡されたidから特定のレコードをとってくる $name = $client->name; // 名前を取得 $io->out("selected name is {$name}."); // 名前を出力 } }
ここで定義したコマンドをコンソールから実行したいときは、 パスカルケースで書かれているクラス名のうち、語尾のCommandを除く部分をスネークケースで叩くだけです。 今回の場合は CallIdCommand -> call_id で実行可能です。加えてargumentを渡す必要があります。
$ bin\cake call_id 1 >>> selected name is ほげほげ.