han2kobo
(Han 2kobo)
June 3, 2013, 4:26am
1
para master yii semuanya mau tanya dong…
saya punya tabel naskah.ini sebagian fieldnya :
| id_naskah |id_pengirim | id_penerima |status inbox|
jadi ceritanya saya mau menampilkan JUMLAH data
1.yang STATUS INBOXNYA=belum dibaca DAN
2.yang ID PENERIMANYA=user yang sedang mengakses sistem.
MODEL nya saya buat kek gini:
const STATUS_DIBACA=1;
const STATUS_BELUMDIBACA=2;
public function getPendingInboxCount()
{
return $this->count('stat_inbox='.self::STATUS_BELUMDIBACA);
}
VIEW nya kek gini :
<?php echo CHtml::link(‘Inbox’,array(‘naskah/cari’)).’
(’.Naskah::model()->pendingInboxCount . ‘)’; ?>
nah yang berhasil ke itung jumlahnya baru yang STATUS INBOXNYA=belum dibaca saja.jadi yang ID PENERIMAnya bukan user juga ke itung.gimana supaya ID PENERIMANYA=user saja yang ke itung jumlahnya? mohon bantuannya ya para mastah sekalian.maap saya newbie pake banget
terima kasih
dmukadar
(Daudmukadar)
June 6, 2013, 10:01am
2
untuk tugas beginian enaknya pake AR scope, han2.
dengan asumsi id-nya user agan catat di session (CWebUser) waktu login, model Naskah.php-nya dimodif tambah ginian:
public function scopes() {
return array(
'unread'=>array(
'condition'=>'stat_inbox=' . self::STAT_BELUMDIBACA,
),
'received_by_user'=>array(
'condition'=>'id_penerima=' . Yii:app()->user->id,
),
);
}
lalu getPendingInboxCount-nya boleh dimodif gini:
public function getPendingInboxCount() {
return count($this->received_by_user->unread->findAll());
}
Sisanya sama.
Oya sedikit saran aja, sebaiknya jangan manggil method non static secara static, jadi kalo manggilnya gini:
Naskah::model()->pendingInboxCount()
cocoknya deklarasinya begini:
public static function getPendingInboxCount() {
return count(Naskah::model()->received_by_user->unread->findAll());
}
referensi:
http://www.yiiframework.com/doc/guide/1.1/en/database.ar#named-scopes