読者です 読者をやめる 読者になる 読者になる

(cakephp) モデルの機能 findメソッド 

cakephp

モデルの機能

⭐︎ findメソッド(データの取得)

データベースからデータを取得する機能

1. find('all') → まとめてデータを取得

 データの件数が多いと、全件データを取得することは現実的でないので、  
 1 **conditionsを指定して対象しぼる!!!!!**  
 2 **limitを指定して最大件数を指定する!!!!**  
<?php

class FriendsController extends AppController {
  public function index() {
     $data = $this->Friend->find('all');
     debug($data);
  }
}  

Array
(
  [0] => Array
     (
       [Friend] => Array
         (
           [id] => 1
           [first_name] => Andy
           [last_name]  => 荒川  
         )
     )
  [1] => Array
    (
       [Friend] => Array
         (
           [id] => 2
           [first_name] => Bob
           [last_name]  => 防坂  
         )
     )

SELECT `Friend`.`id`, `Friend`.`first_name`, `Friend`.`last_name` FROM `friends` AS `friend` WHERE 1=1  

条件付きfind('all')

<?php

class FriendsController extends AppController {
  public function index() {  
     $options = array(  
        'conditioins' => array(
        'Friend.first_name' => 'Andy',ˆ
        'Friend.id <' => 2000,
     ),
       'order' => array('Friend.first_name ASC'),  //昇順
       'limiit' => 10
    );
    $data = $this->Friend->find('all');
  }
}  

⭐︎オプションに指定できるキー

  • order データのソート順 ASC DESC ランダムに取得したい 'order' => 'rand()',
  • condition データ取得の検索条件 以外は ['NOT' =>'Model.tag']
  • limit 取得するデータ取得条件の最大
  • fields どのカラムを取得するか

2. find('list') → データを単純なリストで取得

 IDとラベルが対になったリストとして取得する

<?php  

class FriendsController extends AppController {
      public function index() {
             $options = [
                    limit => 3
             ];
             $data = $this->Friend->find('list',  $options);
             debug($data);
     } 
}  

Array
(
  [1] => 設楽  
  [2] => 上村  
  [3] => 服部  
)  

3. find('first') → データを一件だけ取得

⭐︎ queryメソッド(SQLの直接実行)

<?php  

class FriendsController extends AppController {
      public function index() {  
            $sql = 'SELECT * FROM friends as friend WHERE id IN (1,2)';  
            $data = $this->Friend->query($sql);
      }
}