$ create database mydata;
$ use mydata;
$ create table people (
id int primary key AUTO_INCREMENT,
name varchar(100),
mail varchar(200),
age int
);
mysql> describe people;
+——-+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+——-+————–+——+—–+———+—————-+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| mail | varchar(200) | YES | | NULL | |
| age | int | YES | | NULL | |
+——-+————–+——+—–+———+—————-+
4 rows in set (0.00 sec)
$ insert into people (name, mail, age) values
(“taro”, “taro@gmail.com”, 45),
(“hanako”, “hanako@gmail.com”, 34),
(“sachiko”, “sachiko@gmail.com”, 23),
(“ichiro”, “ichiro@gmail.com”, 12),
(“machiko”, “machiko@gmail.com”, 29);
app.php, app_local.phpを修正
'Datasources' => [
'default' => [
'host' => 'localhost',
/*
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment
* the following line and set the port accordingly
*/
//'port' => 'non_standard_port_number',
'username' => 'hoge',
'password' => 'fuga',
'database' => 'mydata',
'log' => true,
'url' => env('DATABASE_URL', null),
],
],
### エンティティとテーブル
src/Model/Entity
src/Model/Table
テーブルクラス
src/Model/Table/PeopleTable.php
namespace App\Model\Table;
use Cake\ORM\Table;
class PeopleTable extends Table {
}
src/Model/Entity/Person.php
namespace App\Model\Entity;
use Cake\ORM\Entity;
class Person extends Entity {
}
PeopleController.php
namespace AppController;
use App\Controller\AppController;
class PeopleController extends AppController {
public function index(){
$data = $this->People->find('all');
$this->set('data', $data);
}
}
src/Template/People/index.ctp
<p>This is People table records.</p>
<table>
<thead><tr>
<th>id</th><th>name</th><th>mail</th><th>age</th>
</tr></thead>
<?php foreach($data->toArray() as $obj): ?>
<tr>
<td><?=h($obj->id) ?></td>
<td><?=h($obj->name) ?></td>
<td><?=h($obj->mail) ?></td>
<td><?=h($obj->age) ?></td>
</tr>
<?php endforeach; ?>
</table>
http://192.168.56.10:8080/people
PeopleTable.php
namespace App\Model\Table;
use Cake\ORM\Table;
class PeopleTable extends Table {
public function initialize(array $config){
parent::initialize($config);
$this->setTable('people');
$this->setDisplayField('name');
$this->setPrimaryKey('id');
}
}
Entity
class Person extends Entity {
protected $_accessible = [
'name' => true,
'mail' => true,
'age' => true
];
}
なるほど、TableとEntityの使い方は何となく理解した。