age > 20 and age < 40
select * from persons where age > 20 and age < 40
use Cake\Datasource\ConnectionManager;
ConnectionManagerは、Cake\Datasource名前空間に配置されていますので、このuse文を追記しないとクラス名だけで利用することができません。忘れないように!$connection = ConnectionManager::get('default');
まず最初に、ConnectionManagerでConnectionインスタンスを取得します。これは先程の説明のとおりですね。$query = 'select * from persons where ' . $find;続いて、実行するクエリーのテキストを用意しておきます。「select * from persons where」の後に、送信されてきたテキストをつなげています。
$persons = $connection->query($query)->fetchAll();メソッドチェーンを使っています。Connectionからqueryを呼び出し、更にfetchAllで全エンティティを取得しています。これで、検索されたレコードが配列の形で取り出されました。後は、これをテンプレート側に渡して処理していくだけです。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
// use Cake\Datasource\ConnectionManager; // このuseを追加 public function find() { $this->set('msg', null); $persons = []; if ($this->request->is('post')) { $find = $this->request->data['find']; $connection = ConnectionManager::get('default'); $query = 'select * from persons where ' . $find; $persons = $connection->query($query)->fetchAll(); } $this->set('persons', $persons); }
<< 前へ |