2017-07-16 15 views
1

"IDカテゴリ"(カテゴリID)を "カテゴリカテゴリ"に変更しようとしました。カテゴリIDは製品テーブルにあり、カテゴリとの関連性があります表。 Yii 2.0 - 非オブジェクトのプロパティを取得しようとしています

は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]); 
     }, 
], 

、これはこれは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

はあなたの関係getKategoriモデルをretrunしていないようです..あなたが疑問視更新しKategoriモデルのコードにもご回答のため – scaisEdge

+0

感謝を追加@scaisEdge私は質問を編集し、カテゴリモデルを追加しました。 –

答えて

1

あるモデル

<?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']); 
    } 
} 

である私は、私はあなたのエラーを繰り返すことができますことを確認するために自分自身をチェックし、ケースのようです。データベース内

、表produktは(存在しない値は、それがkategoriテーブルに存在しないIDを有することを意味する)の列がIdKategoriと呼ばれ、少なくとも1行がテーブルkategoriためnullまたは非既存の値のいずれかを含む有し。あなたは(1例)であることを解決することができます

'value' => function ($model, $key, $index) { 
    if (empty($model->kategori->deskripsi)) { 
     return ''; 
    } else { 
     return Html::a($model->kategori->deskripsi, ['kategori/view', 'id' => $model->Id]); 
    } 
}, 
関連する問題