cakephp3のTableオブジェクトをいろいろ見てみた
現在は調査中なので…
私が勝手にそう思っているだけで意味合いややり方は別にあるかも……………………………………というかあるはず
Tableオブジェクト
Rowオブジェクトとして考えられているよう
findメソッドなどはあるが、以前あったqueryメソッドは2.x系とは異なりQueryビルダーを生成するオブジェクトのよう
データの取得
<php $members = TableRegistry::get('Members'); $query = $members->find(); foreach ($query as $row) { var_dump($row); }
TableRegistryを使用してTableオブジェクトを取得して、データを取得する
findの取得結果はmemberエンティティオブジェクト
結果ちょっとだけ
class App\Model\Entity\Member#57 (9) { protected $_accessible => array(3) { 'name' => bool(true) 'age' => bool(true) 'tel' => bool(true) } protected $_properties => array(6) { 'id' => int(1) 'name' => string(24) "テスとユーザー1" 'age' => int(20) 'tel' => string(12) "000-111-2222" 'created' => class Cake\Utility\Time#58 (3) { public $date =>
SQLは実行できないの?
ありますけどねえ…
<?php $members = TableRegistry::get('Members'); $query2 = $members->connection()->query("select * from members"); foreach($query2 as $row){ var_dump($row); }
Tableオブジェクトの中にconnectionがあるのでそこから直接SQLを実行することで対応出来ます。
しかし、直接アクセスしているので結果はPDOの結果になります。
SQLを記載するのが好きな人はこちらの方がいいかもしれないけどなんかうまくする方法とかあるかな?
ちょっとだけ結果
array(12) { 'id' => string(1) "1" [0] => string(1) "1" 'name' => string(24) "テスとユーザー1" [1] => string(24) "テスとユーザー1" 'age' => string(2) "20" [2] => string(2) "20" 'tel' => string(12) "000-111-2222" [3] => string(12) "000-111-2222"