ขอบสอบถามหน่อยครับ ผมใช้ BlameableBehavior บันทึกข้อมูล "created_by " "updated_by" ผมต้องการให้ view แสดง username แทน id ผมต้องแก้ไขอย่างไรครับ

wave
nararat.k
4,258
สังคมนักพัฒนาระบบ (Community)
ขอบสอบถามหน่อยครับ ผมใช้ BlameableBehavior บันทึกข้อมูล "created_by " "updated_by" ผมต้องการให้ view แสดง username แทน id ผมต้องแก้ไขอย่างไรครับ

ขอบสอบถามหน่อยครับ ในส่วนของ "สร้างโดย" "แก้ไขโดย" ตรงวงกลมสีแดง ผมต้องการให้แสดงเป็น username ซึ่งตอนนี้ยังแสดงเป็น id อยู่ ผมต้องแก้ไขอย่างไรครับ ขอบคุณครับ

Models Blog.php ผมใช้ BlameableBehavior ในการบันทึกข้อมูลลง Database ครับ

<?php

use yii\behaviors\BlameableBehavior;
use yii\behaviors\TimestampBehavior;

// .....

class Blog extends \yii\db\ActiveRecord
{

    public function behaviors(){
      return [
        BlameableBehavior::className(),
        TimestampBehavior::className()
      ];
    }

  //...
}

ส่วนของ View.php

//.............

    <?= DetailView::widget([
        'model' => $model,
        'attributes' => [
            'id',
            'title',
            'content',
            'category'
            'tag'
            'created_at:dateTime',
            'created_by'
            'updated_at:dateTime',
            'updated_by',
        ],
    ]) ?>

//..................

3 ความคิดเห็น

  • exclusiveman

  • nararat.k

  • มานพ กองอุ่น
//...
[
    'attribute' => 'created_by',
    'value' => $model->userCreated->username,
],
[
    'attribute' => 'updated_by',
    'value' => $model->userUpdated->username,
],
//...

สร้าง Relation ใน Model ด้วยครับ

<?php
use common\models\User;
//....

public function getUserCreated()
{
    return $this->hasOne(User::className(), ['id' => 'created_by']); 
}

public function getUserUpdated()
{
    return $this->hasOne(User::className(), ['id' => 'updated_by']); 
}

ได้ผลอย่างไรบอกด้วยนะครับ

แก้ไขตามโค้ดของ admin ได้เรียบร้อยแล้วครับ

ขอบคุณมากนะครับ :-)

ผมกด update ไม่ได้อ่ะครับ ในตอนที่แก้ไขข้อมูลจะ update 

กดปุ่ม update ละนิ่งเลย ไม่ขยับไปไหนเลย