0
私は現在、私の最初のCakePHPサイトを書いています。私はイメージギャラリーで働いています。私は、フロントページ上のアルバムあたりの画像数を持っていたいと思います。CakePHP - Album-paginateでアルバムごとに画像を数えるにはどうしたらいいですか? (Image belongsTo Album)
モデル:
<?php
class Album extends AppModel {
var $name = 'Album';
var $displayField = 'name';
var $belongsTo = array(
'ParentAlbum' => array(
'className' => 'Album',
'counterCache' => true,
'foreignKey' => 'parent_id'
)
);
var $hasMany = array(
'ChildAlbum' => array(
'className' => 'Album',
'foreignKey' => 'parent_id',
'dependent' => false
),
'Image' => array(
'className' => 'Image',
'foreignKey' => 'album_id',
'dependent' => false
)
);
}
<?php
class Image extends AppModel {
var $name = 'Image';
var $displayField = 'Name';
var $belongsTo = array(
'Album' => array(
'className' => 'Album',
'counterCache' => true
)
);
}
コントローラー:
[[email protected] public_html]# cat controllers/albums_controller.php
<?php
class AlbumsController extends AppController {
var $name = 'Albums';
var $paginate = array(
'limit' => 95,
'order' => array(
'Album.name' => 'asc')
);
function index() {
$this->Album->recursive = 0;
$this->set('albums', $this->paginate());
$this->set("title_for_layout","CakeGal");
}
function view($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid album', true));
$this->redirect(array('action' => 'index'));
}
$this->set('album', $this->Album->read(null, $id));
$this->set("title_for_layout", $this->Album->data['Album']['name']);
}
}
ビュー:
[[email protected] public_html]# cat views/albums/index.ctp
<?php foreach ($albums as $album): ?>
<li class="thumbnail" style="width: 164px; margin-left: 26px;">
<a class="collection-image-link" href="/albums/view/<?php echo $album['Album']['id']; ?>
"><img class="photos" src="/thumbs/<?php echo $album['Album']['id']; ?>.jpg" title="" alt="" /></a>
<h2><a href="/albums/view/<?php echo $album['Album']['id']; ?>"><?php echo $album['Album']['name']; ?></a></h2>
<p class="album-meta">Contains <?php echo $album_count; ?> pictures</p>
</li><!-- end .album -->
<?php endforeach; ?>
一般的アドバイスもWELだろう来て!それは私の最初のCakePHPプロジェクトの後であり、初めてcakephpに関するフォーラムで助けを求めています。私はアルバムの数を数えることができますが、1アルバムあたりの画像数を数え、$ album_countとして投稿したいと思います。
こんにちは!投稿を更新しましたが、counter_cacheは機能しません。私はparent_albumをalbum_idに変更しました。 Countercacheは0の値をすべて表示し、Cake経由でイメージ/アルバムを追加/編集/削除しません。読み込みのみ...どのようにカウンターキャッシュを更新するのですか? – Dennis
あなたはどこかからデータをインポートしますか? Cakeで追加/編集/削除しないと、countCacheは機能しません。カウントフィールドをクエリして設定するための独自のコードを記述することができます。 –
はい、私は毎晩カウンターを書き直すべきだと思います。そして、はい、私は自分の輸入者をPHPで書いています。 – Dennis