CakePHP 2.6.10 페이징 및 검색 기능
1. public에 coponents 만들기
컨트롤러public $components = array('Paginator');
 
 2. 조건 설정 및 내보내기
컨트롤러// フィールド指定
$paginate['fields'][] = 'Orders.*, OrderDetails.*, Members.member_flg, Members.pref';
// Join設定
$paginate['joins'][] = array(
  'type' => 'Inner',
  'table' => 'order_detail',
  'alias' => 'OrderDetails',
  'conditions' => 'Orders.order_no = OrderDetails.order_no',
);
$paginate['joins'][] = array(
  'type' => 'Inner',
  'table' => 'Member_list',
  'alias' => 'Members',
  'conditions' => 'Members.member_id = Orders.login_id',
);
//表示数指定
$paginate['limit'] = 20;
//ソート設定
$paginate['order']['order_date'] = "desc";
//書き出し
$this->Paginator->settings = $paginate;
//存在しないページにいる場合は最初に戻す
try{
  $orders = $this->paginate('Orders', $option['conditions']);
}catch(Exception $e){
  $this->request->params['named']['page'] = 1;
  $orders = $this->paginate('Orders', $option['conditions']);
}
$this->set('Orders', $orders);
 기타 검색 조건
컨트롤러// 検索条件
if(!empty($_GET['mode']) && $_GET['mode'] == 'search'){
 // ここに条件を入れていく
  // 期間指定 //Orders.order_date を書き換え
  if(!empty($_GET['date_before']) && !empty($_GET['date_after'])){
    $option['conditions']['Orders.order_date BETWEEN ? AND ?'] = array($_GET['date_before']." 00:00:00", $_GET['date_after']." 23:59:59");
    $getform['date_before'] = $_GET['date_before'];
    $getform['date_after'] = $_GET['date_after'];
  }elseif(!empty($_GET['date_before']) && empty($_GET['date_after'])){
    $option['conditions']['Orders.order_date >='] = $_GET['date_before']." 00:00:00";
    $getform['date_before'] = $_GET['date_before'];
  }elseif(empty($_GET['date_before']) && !empty($_GET['date_after'])){
    $option['conditions']['Orders.order_date <='] = $_GET['date_after']." 00:00:00";
    $getform['date_after'] = $_GET['date_after'];
  }
  // フリーワード
  if(!empty($_GET['keyword'])){
    $keys = preg_split('/[\s|\x{3000}]+/u', $_GET['keyword']);
    foreach($keys as $key => $value){
      $option['conditions'][$key]['OR']['Orders.order_no like'] = "%".$value."%";
      $option['conditions'][$key]['OR']['Orders.campany_name like'] = "%".$value."%";
      $option['conditions'][$key]['OR']['Orders.order_name_sei like'] = "%".$value."%";
    }
  }
  $getform['keyword'] = $_GET['keyword'];
}
 3. 양식 만들기
HTML<!-- 検索機能 -->
<form method="get" name="search" id="search">
<div>
  <input type="hidden" name="mode" value="search">
  <h3>検索項目</h3>
  <span>登録期間:
    <input type="date" name="date_before" <?php if(!empty($getform['date_before'])){ echo 'value="'.$getform['date_before'].'"';} ?>>
     -
    <input type="date" name="date_after" <?php if(!empty($getform['date_after'])){ echo 'value="'.$getform['date_after'].'"';} ?>>
  </span>
  <span>キーワード:
    <input type="text" name="keyword" value="<?php if(!empty($getform['keyword'])){ echo $getform['keyword']; } ?>">
  </span>
  <input type="submit" value="検索">
</div>
</form>
 3. 페이징 기능 만들기
HTML<!-- ページング -->
<div id="paginate">
  <span class="prev"><?php echo $this->Paginator->prev('< 前へ', array(), null, array('class' => 'prev disabled')); ?></span>
  <span class="pageno"><?php echo $this->Paginator->numbers(array('separator' => '')); ?></span>
  <span class="next"><?php  echo $this->Paginator->next('次へ >', array(), null, array('class' => 'next disabled')); ?></span>
</div>
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(CakePHP 2.6.10 페이징 및 검색 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/Youz/items/2b550691228048fa40ae
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
public $components = array('Paginator');
컨트롤러
// フィールド指定
$paginate['fields'][] = 'Orders.*, OrderDetails.*, Members.member_flg, Members.pref';
// Join設定
$paginate['joins'][] = array(
  'type' => 'Inner',
  'table' => 'order_detail',
  'alias' => 'OrderDetails',
  'conditions' => 'Orders.order_no = OrderDetails.order_no',
);
$paginate['joins'][] = array(
  'type' => 'Inner',
  'table' => 'Member_list',
  'alias' => 'Members',
  'conditions' => 'Members.member_id = Orders.login_id',
);
//表示数指定
$paginate['limit'] = 20;
//ソート設定
$paginate['order']['order_date'] = "desc";
//書き出し
$this->Paginator->settings = $paginate;
//存在しないページにいる場合は最初に戻す
try{
  $orders = $this->paginate('Orders', $option['conditions']);
}catch(Exception $e){
  $this->request->params['named']['page'] = 1;
  $orders = $this->paginate('Orders', $option['conditions']);
}
$this->set('Orders', $orders);
기타 검색 조건
컨트롤러
// 検索条件
if(!empty($_GET['mode']) && $_GET['mode'] == 'search'){
 // ここに条件を入れていく
  // 期間指定 //Orders.order_date を書き換え
  if(!empty($_GET['date_before']) && !empty($_GET['date_after'])){
    $option['conditions']['Orders.order_date BETWEEN ? AND ?'] = array($_GET['date_before']." 00:00:00", $_GET['date_after']." 23:59:59");
    $getform['date_before'] = $_GET['date_before'];
    $getform['date_after'] = $_GET['date_after'];
  }elseif(!empty($_GET['date_before']) && empty($_GET['date_after'])){
    $option['conditions']['Orders.order_date >='] = $_GET['date_before']." 00:00:00";
    $getform['date_before'] = $_GET['date_before'];
  }elseif(empty($_GET['date_before']) && !empty($_GET['date_after'])){
    $option['conditions']['Orders.order_date <='] = $_GET['date_after']." 00:00:00";
    $getform['date_after'] = $_GET['date_after'];
  }
  // フリーワード
  if(!empty($_GET['keyword'])){
    $keys = preg_split('/[\s|\x{3000}]+/u', $_GET['keyword']);
    foreach($keys as $key => $value){
      $option['conditions'][$key]['OR']['Orders.order_no like'] = "%".$value."%";
      $option['conditions'][$key]['OR']['Orders.campany_name like'] = "%".$value."%";
      $option['conditions'][$key]['OR']['Orders.order_name_sei like'] = "%".$value."%";
    }
  }
  $getform['keyword'] = $_GET['keyword'];
}
3. 양식 만들기
HTML<!-- 検索機能 -->
<form method="get" name="search" id="search">
<div>
  <input type="hidden" name="mode" value="search">
  <h3>検索項目</h3>
  <span>登録期間:
    <input type="date" name="date_before" <?php if(!empty($getform['date_before'])){ echo 'value="'.$getform['date_before'].'"';} ?>>
     -
    <input type="date" name="date_after" <?php if(!empty($getform['date_after'])){ echo 'value="'.$getform['date_after'].'"';} ?>>
  </span>
  <span>キーワード:
    <input type="text" name="keyword" value="<?php if(!empty($getform['keyword'])){ echo $getform['keyword']; } ?>">
  </span>
  <input type="submit" value="検索">
</div>
</form>
 3. 페이징 기능 만들기
HTML<!-- ページング -->
<div id="paginate">
  <span class="prev"><?php echo $this->Paginator->prev('< 前へ', array(), null, array('class' => 'prev disabled')); ?></span>
  <span class="pageno"><?php echo $this->Paginator->numbers(array('separator' => '')); ?></span>
  <span class="next"><?php  echo $this->Paginator->next('次へ >', array(), null, array('class' => 'next disabled')); ?></span>
</div>
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(CakePHP 2.6.10 페이징 및 검색 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/Youz/items/2b550691228048fa40ae
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
<!-- 検索機能 -->
<form method="get" name="search" id="search">
<div>
  <input type="hidden" name="mode" value="search">
  <h3>検索項目</h3>
  <span>登録期間:
    <input type="date" name="date_before" <?php if(!empty($getform['date_before'])){ echo 'value="'.$getform['date_before'].'"';} ?>>
     -
    <input type="date" name="date_after" <?php if(!empty($getform['date_after'])){ echo 'value="'.$getform['date_after'].'"';} ?>>
  </span>
  <span>キーワード:
    <input type="text" name="keyword" value="<?php if(!empty($getform['keyword'])){ echo $getform['keyword']; } ?>">
  </span>
  <input type="submit" value="検索">
</div>
</form>
HTML
<!-- ページング -->
<div id="paginate">
  <span class="prev"><?php echo $this->Paginator->prev('< 前へ', array(), null, array('class' => 'prev disabled')); ?></span>
  <span class="pageno"><?php echo $this->Paginator->numbers(array('separator' => '')); ?></span>
  <span class="next"><?php  echo $this->Paginator->next('次へ >', array(), null, array('class' => 'next disabled')); ?></span>
</div>
                Reference
이 문제에 관하여(CakePHP 2.6.10 페이징 및 검색 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Youz/items/2b550691228048fa40ae텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)