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);
}
| << 前へ |