>  기사  >  백엔드 개발  >  Cakephp 페이지 매기기에서 바인딩 해제를 사용하는 방법

Cakephp 페이지 매기기에서 바인딩 해제를 사용하는 방법

黄舟
黄舟원래의
2016-12-20 10:03:551645검색

cakephp 컨트롤러의 Paginate는 헬퍼에 있는 Paginator를 사용하면 쉽게 페이지 매김 목록과 정렬된 목록 페이지를 만들 수 있습니다.
그런데 cakephp 사용법을 배우기 시작하면서 궁금한 점이 생겼습니다.
모델 바인딩을 해제하는 방법
일반적인 상황에서는 찾기 전에 필요하지 않은 모델을 바인딩 해제하는 한 이러한 모델 연결을 검색할 필요가 없습니다. 그리고 이를 찾은 후 이전에 출시한 모델을 자동으로 연결합니다. 다음은 일반적으로 사용되는 방법입니다


//user model
class User extends AppModel {

var $name = 'User';
var $belongsTo = array(
'Profile' = array('className'=>'Profile','foreignKey'=>'user_id' )
     )
}


다음 코드를 실행하세요


$this->User->unbind(array(' 소속 '=>array('Profile')));
$rs=$this->User->find();


$rs는


array(
'User'=>array(),
)


찾기 전에 바인딩 해제가 실행되지 않으면 $ rs는


array(
>


그러나 paginate

code]$this->User->unbind(array('belongsTo'=>array( 'Profile')));

$rs=$this->paginate('User');
[/code]
$rs의 결과는 여전히



array(
'User'=>array(),

'Profile'=> array()

)



왜 paginate Association(unbind)에서 해제할 수 없나요?
이유는 find에서 데이터를 가져온 후 find가 사용하기 때문입니다. model->resetAssociations(); 페이지 매김에서 찾기는 두 번 사용됩니다. 한 번은 페이징에 표시되는 데이터를 가져옵니다. 🎜>해결 방법: unbind의 두 번째 매개 변수에 true가 아닌 값을 할당합니다. unbind의 두 번째 매개 변수가 true이면 cakephp는 model->resetAssociations를 실행할 때 연결을 해제해야 하는 데이터베이스를 저장합니다. (); 이는 model->__backAssociation에서 관련 데이터를 복원하므로 다음 코드로 이를 해결할 수 있습니다



$this->User->unbind(array(' ownTo'=>array('Profile')),false);
$rs=$this-> ;paginate('User');


또한 다음과 같은 경우 paginate()를 실행한 후 모델의 관련 데이터를 사용해야 app_model.php 파일에 추가할 수 있습니다. 다음 코드


/**
     * 함수 설명: 연결을 끄고 연결을 반환합니다.
   *                    Controller->paginate() 및 Model->bind()에 대해 작동하는 함수입니다.
   *                     기능은 다음과 같습니다. 일부 바인딩을 해제하기 전에 Controller->paginate()에서 데이터를 가져오는 데 도움이 됩니다.
   *                     데이터를 가져온 후 연결 제거를 위한 연결 및 리바인딩
   *                      연결을 다시 바인딩할 필요가 없는 경우에만 사용할 수 있습니다 > 
     * @Date:2008-10-10
   *
   * $backAssociation = $this->ModelName->unbindAndPushModels(array('belongsTo'=>array('User')));
   * $result= $this->paginate('ModelName');
   * $this->ModelName->bind($backAssociation);//이 작업은 연결 데이터의 모델을 복원하는 것입니다.
   * < /code
     * @param    (类型)参数name  :描述
  **/
함수 unbindAndPushModels($params)
{
$backAssociation=array();
foreach ($params as $assoc => $models)
{
foreach ($models를 $model로)
{
If(isset($this->{$assoc}[$model]))
{
          $backAssociation[$assoc][$model] = ; backAssociation;

위는 Cakephp가 페이지 매김에서 unbind를 사용하는 방법입니다. 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요. )!




성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.