cakephp のコントローラーの paginate は、ページネーション データを取得する関数です。ヘルパーに Paginator を使用すると、ページ分割されたリストやソートされたリスト ページを簡単に作成できます。
モデルのバインドを解除するにはどうすればよいですか?
通常の状況では、検索する前に必要のないモデルをバインド解除する限り、これらのモデルに関連付けられたデータ テーブルを検索する必要はありません。将来的には、以前にリリースしたモデルが自動的に再び関連付けられます。 以下はよく使用されるメソッドです
//user model
class User extends AppModel {
var $name = 'User';
var $belongsTo = array(
'profile' = array( 'classname' => 'profile'、 'foreignkey' => 'user_id') ;unbind(array('belongsTo'=>array('Profile')));
$rs=$this->User->find();
'user' = & gt; array (),
)
find 前に実行せずにアンバインドした場合、$ rs は
Array (
'user' = & gt; array (),
' ,
' Profile'=>array()
)
しかし、paginate
$this->User->unbind(array('belongsTo' =>array( 'Profile')));
$rs=$this->paginate('User');
[/code]
$rs の結果は依然として
array(
'User '=>array() ,
'Profile'=>array()
)
なぜページネーションでアンバインドできないのですか?
解決策: unbind の 2 番目のパラメーターに true 以外の値を割り当てます。unbind の 2 番目のパラメーターが true の場合、cakephp は、model->__backAssociation の実行時に関連付けを解除する必要があるデータベースを保存します。 ;resetAssociations(); model-> から取得されます;__backAssociation は関連する関連データを復元しますので、次のコードで問題を解決できます
$this->User->unbind(array('belongsTo'=) >array('Profile')),false);
$rs=$this->paginate('User');
さらに、paginate() を実行した後、関連するデータを使用する必要がある場合モデル内でデータを検索するには、次のコードを app_model.php ファイルに追加します。
/**
* 関数の説明: アソシエーションをオフにし、アソシエーションを返します。
* この関数は、Controller->paginate() および Model->bind() で動作します。
* この関数は、データフォームを取得するのに役立ちます一部のバインドを解除する前にコントローラー->paginate()
* データを取得した後に関連付けを削除し、再バインドします。
* 関連付けを再バインドする必要がない場合は、
* * <コード>
* $this - &gt; models-&gt; unbind($ params、false);
*&lt;/code&gt;
* @date:2008-10-10
*&lt; code&gt; >unbindAndPushModels(array('belongsTo'=>array('User')));
* $result=$this->paginate('ModelName');
* $this->ModelName->bind ($backAssociation);//このアクションは、関連付けデータのモデルを復元することです。
* * @param (类型)パラメータ名 :描述
**/
Function unbindAndPushModels($params)
{
$backAssociation=array();
foreach ($params as $assoc => $models)
{
foreach ( $models as $モデル)
}[$model]);
} $backAssociation を返します。