2015/12/21 久米
| ファイル | コード例 | 備考 | |
| C | src>Controller> NekoChansController.php |
<?php
namespace App\Controller;
use App\Controller\AppController;
class NekoChansController extends AppController{
public function index(){
$nekoChans = $this->NekoChans->find();
$this->set('nekoChans', $nekoChans);
}
} |
namespaceはこのクラスを 一意に識別するためのもの。 ツリー構造で指定。 例 App\Controller\NekoChansController ほとんどが、フォルダ構成になっている。 useはこのクラスが使う他のクラスを指定。 import文と同じ。 |
| M | src>Model>Table> NekoChansTable.php |
無ければデフォルトでオブジェクト生成してくれるので。今回は不要 | |
| V その1 |
src>Template>NekoChans> index.ctp |
<h1>猫ちゃんず</h1> <pre><?php print_r($nekoChans); ?></pre> |
|
| V その2 |
src>Template>NekoChans> index.ctp |
<h1>猫ちゃんず</h1>
<table>
<tr><th>id</th><th>名前</th><th>特技</th><th>年齢</th></tr>
<?php foreach($nekoChans as $nekoChan): ?>
<tr>
<td><?= $nekoChan->id ?></td>
<td><?= h($nekoChan->name) ?></td>
<td><?= h($nekoChan->tokugi) ?></td>
<td><?= h($nekoChan->age) ?></td>
</tr>
<?php endforeach; ?>
</table> |
<?= 変数 ?>はコラム参照 h()はhtmlspecialchars() のラッパー。 CakePHP独自仕様。 |
| アクセス | http://localhost/web3/caketest/neko-chans/ |
参考)Template>NekoChansはコンテンツのみ定義、Template>Layoutはhtml全体を定義(後述)
演習1 ネコカフェメニューの、全検索してみよ。
| ファイル | コード例 | 備考 | |
| C | src>Controller> NekoChansController.php |
<?php
namespace App\Controller;
use App\Controller\AppController;
class NekoChansController extends AppController{
public function index(){
$nekoChans = $this->NekoChans->find();
$this->set('nekoChans', $nekoChans);
}
public function findNeru(){
$nekoChans = $this->NekoChans->findNeru();
$this->set('nekoChans', $nekoChans);
}
} |
|
| M | src>Model>Table> NekoChansTable.php |
<?php
namespace App\Model\Table;
use Cake\ORM\Table;
class NekoChansTable extends Table{
public function findNeru(){
$result=$this->find()->where(['tokugi'=>'寝る'])->order(['age'=>'Desc']);
return $result;
}
} |
直接SQL文を発行することも 可能であるが |
| V | src>Template>NekoChans> find_neru.ctp |
上記3.1index.ctpと同じコード | |
| アクセス | http://localhost/web3/caketest/neko-chans/find-neru |
| find()から連鎖して使用 | 意味 | 例 |
| where([ field名 => 値 ]) | 条件句 | ->where(['name like ' => '%ちゃん%']) |
| order( [ field名 => 'Asc' または 'Desc' ] ) | ソート順 | ->order(['age'=>'Desc']) |
| select([ field1, field2, …]) | 取り出す列指定 | ->select([ 'name', 'age']) |
| offset( 整数 ) | 取り出す位置 | ->offset( 20 )->limit( 10 ) |
| limit( 整数 ) | 取り出す個数 |
演習2 ネコカフェメニューの、絞り込み検索してみよ。
コラム:<?= $abc ?>とは下記の3つは同じ意味。HTMLに出力。 <?php print $abc; ?> PHP5.4からは3番目がなにも設定せずに使用できることとなった。
|