4.4.10 修改器与访问器

set{Field}Attribute():修改器

  • ORM类中的定义
<?php
namespace App\Model;

use Hyperf\Database\Model\Events\Created;
use Hyperf\Database\Model\Events\Creating;
use Hyperf\Database\Model\SoftDeletes;
use Hyperf\DbConnection\Model\Model;
/**
 * @property int $id
 * @property string $merchant_no
 * @property string $title
 * @property string $desc
 * @property int $status
 * @property string $meta
 * @property string $cdn_addr
 * @property \Carbon\Carbon $created_at
 * @property \Carbon\Carbon $updated_at
 * @property string $deleted_at
 */
class UserActivity extends Model
{
    /**
     * 表名
     * @var string
     */
    protected $table = 'user_activity';

    ...

    /**
     * title字段在保存时做修改
     * @param $title
     */
    public function setTitleAttribute($title)
    {
        // 出去title字段值的首位空格
        $this->attributes['title'] = trim($title);
    }
}
  • 外部使用
<?php
namespace App\Controller;

class IndexController extends AbstractController
{
    public function index()
    {
        // 获取一条数据信息
        $userActivity = \App\Model\UserActivity::query()->find(10028);
        // 将数据中title字段重新赋值 >>>> 此时触发setTitleAttribute
        $userActivity->title = '   test   ';
        return [
            'title' => $userActivity->title
        ];
    }
}

输出
{
    "title": "test"
}

get{Field}Attribute():访问器

  • ORM类中的定义
<?php
namespace App\Model;

use Hyperf\Database\Model\Events\Created;
use Hyperf\Database\Model\Events\Creating;
use Hyperf\Database\Model\SoftDeletes;
use Hyperf\DbConnection\Model\Model;
/**
 * @property int $id
 * @property string $merchant_no
 * @property string $title
 * @property string $desc
 * @property int $status
 * @property string $meta
 * @property string $cdn_addr
 * @property \Carbon\Carbon $created_at
 * @property \Carbon\Carbon $updated_at
 * @property string $deleted_at
 */
class UserActivity extends Model
{
    /**
     * 表名
     * @var string
     */
    protected $table = 'user_activity';

    ...

    /**
     * title字段在获取时做修改
     * @param $title
     * @return string
     */
    public function getTitleAttribute($title): string
    {
        return strtoupper($title);
    }
}
文档更新时间: 2021-09-24 17:48   作者:赵豪