dmukadar
(Daudmukadar)
December 2, 2015, 8:27am
1
saya punya referensi dari https://sabitlabscode.wordpress.com/2011/08/11/yii-framework-membuat-entry-data-one-to-many-relation-dengan-tabel-dinamis/
beda nya tabel saya pelanggan sama menupesanan
di viewnya saya ingin menambahkan variable baru nama nya total yang diambil dari perkalian field jumlah * field harga yang ada di tabel daftarmenu, tapi buat bikin proses perkalian nya saya bingung nyimpen dimana
ini controller nya
public function actionCreate()
{
$model=new Pelanggan;
$model2=new MenuPesanan;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Pelanggan']))
{
$model->attributes=$_POST['Pelanggan'];
$model->tgl=date("Y-m-d H-i-s");
if($model->save())
{
if(isset($_POST['menu_id']))
{
$total=count($_POST['menu_id']);
for($i=0;$i<=$total;$i++)
{
if(isset($_POST['menu_id'][$i]))
{
$pesan = new MenuPesanan;
$pesan->pelanggan_id=$model->id;
$pesan->menu_id = $_POST['menu_id'][$i];
$pesan->jumlah = $_POST['jumlah'][$i];
$pesan->total=$pesan->jumlah * $pesan->reldaf->harga;
$pesan->save();
}
}
$this->redirect(array('view','id'=>$model->id));
}
}
}
dan ini view nya
<?php
/* @var $this PelangganController */
/* @var $model Pelanggan */
$this->breadcrumbs=array(
'Pelanggans'=>array('index'),
$model->id,
);
$this->menu=array(
array('label'=>'List Pelanggan', 'url'=>array('index')),
array('label'=>'Create Pelanggan', 'url'=>array('create')),
array('label'=>'Update Pelanggan', 'url'=>array('update', 'id'=>$model->id)),
array('label'=>'Delete Pelanggan', 'url'=>'#', 'linkOptions'=>array('submit'=>array('delete','id'=>$model->id),'confirm'=>'Are you sure you want to delete this item?')),
array('label'=>'Manage Pelanggan', 'url'=>array('admin')),
);
?>
<h1>View Pelanggan #<?php echo $model->id; ?></h1>
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'id',
'nama',
'tgl',
'tgl_pesan',
'jam',
'tempat_id',
),
)); ?>
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$menupesanan,
'columns'=>array(
'reldaf.nama_menu',
'reldaf.harga',
'jumlah',
'total',
),
)); ?>
ini tampilan yang saya inginkan
http://www.yiiframework.com/forum/index.php?app=core&module=attach§ion=attach&attach_rel_module=post&attach_id=6809
ada beberapa cara yg bisa digunakan untuk menampilkan kolom total:
http://www.yiiframework.com/doc/api/1.1/CGridView
kalau membaca dokumentasi CGridView, Anda bisa menambahkan kolom ke-4 untuk total yg nilainya diisi dari hasil operasi matematika. Contoh:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
//kolom2 dari database
...
array( // khusus kolom perhitungan total
'name'=>'total',
'value'=>'$data->reldaf->harga * $data->jumlah',
),
...
),
));
sebagai pseudo attribut di model
pada model MenuPesanan tambahkan attribut $total, tentukan kapan attribut ini diisi. Misalnya setelah proses load model / searching, bisa dengan overwrite fungsi afterFind()
sebagai field di database
yg paling baik menurut saya solusi ke-3, pada tabel yg diwakili model MenuPesanan, tambahkan saja field untuk menyimpan total. Nilainya diisi pada saat save().