我尝试将“ID Kategori”(类别ID)更改为“Nama Kategori”(类别名称),类别ID在产品表中,并且与类别表有关系。
使用kartik-v gridView
进行gridView我知道错误发生在return Html::a($model->kategori->deskripsi ,['kategori/view','id' => $model->Id]);
,但我不知道问题是什么或如何修复
请帮助我......>。<
[
'label' => 'Kategori',
'attribute' => 'IdKategori',
'format' => 'raw',
'vAlign' => 'middle',
'value' => function ($model, $key, $index) {
return Html::a($model->kategori->deskripsi ,['kategori/view','id' => $model->Id]);
},
],
这是模型
<?php
namespace common\models;
use Yii;
/**
* This is the model class for table "produk".
*
* @property integer $Id
* @property integer $IdKategori
* @property string $nama_produk
* @property integer $harga_produk
* @property string $gambar
* @property string $deksripsi_produk
* @property string $detail_produk
*/
class Produk extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public $file;
public static function tableName()
{
return 'produk';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['IdKategori', 'nama_produk', 'harga_produk', 'gambar', 'deksripsi_produk', 'detail_produk'], 'required'],
[['IdKategori', 'harga_produk'], 'integer'],
[['file'], 'file'],
[['nama_produk', 'file', 'gambar', 'deksripsi_produk', 'detail_produk'], 'string', 'max' => 255],
[['IdKategori'], 'exist', 'skipOnError' => true, 'targetClass' => Kategori::className(), 'targetAttribute' => ['IdKategori' => 'Id']],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'Id' => 'ID',
'IdKategori' => 'Id Kategori',
'nama_produk' => 'Nama Produk',
'harga_produk' => 'Harga Produk',
'gambar' => 'Gambar',
'deksripsi_produk' => 'Deksripsi Produk',
'detail_produk' => 'Detail Produk',
];
}
public function getKategori()
{
return $this->hasOne(Kategori::className(), ['Id' => 'IdKategori']);
}
}
这是kategori模型
<?php
namespace common\models;
use Yii;
/**
* This is the model class for table "kategori".
*
* @property integer $Id
* @property integer $ParentId
* @property string $nama_kategori
* @property string $deskripsi
*/
class Kategori extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'kategori';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['ParentId', 'nama_kategori', 'deskripsi'], 'required'],
[['ParentId'], 'integer'],
[['nama_kategori', 'deskripsi'], 'string', 'max' => 255],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'Id' => 'ID',
'ParentId' => 'Parent ID',
'nama_kategori' => 'Nama Kategori',
'deskripsi' => 'Deskripsi',
];
}
}
答案 0 :(得分:3)
我检查了自己,以确保我可以重复你的错误,似乎就是这种情况。
在您的数据库中,表produkt
有一个名为IdKategori
的列,至少有一行包含null
或表kategori
的不存在的值(不存在) value表示它具有kategori
表中不存在的ID。
你可以用(一个例子)来解决这个问题:
'value' => function ($model, $key, $index) {
if (empty($model->kategori->deskripsi)) {
return '';
} else {
return Html::a($model->kategori->deskripsi, ['kategori/view', 'id' => $model->Id]);
}
},