easy-swoole / orm

31 stars 27 forks source link

文档 getter 示例错误 #142

Closed guansong8079776 closed 4 years ago

guansong8079776 commented 4 years ago

easyswoole框架版本号、orm组件版本号 [Version]

es 3.3.7 orm 1.4.9

问题描述和截图 [Question]

示例代码:

[ /**

与 框架中 trait Attribute 中 第 209行不符合

    if (method_exists($this, $method)){
           $data[$appendKey] = $this->$method(); // 此处使用append后导致getter传参错误
     }

排查情况和最小复现脚本 [Tests and Recurrence]

guansong8079776 commented 4 years ago

去除getter中参数 $value,$data后即可。

xuanyanwow commented 4 years ago

由于你并未提供复现脚本,只能猜测你是调用了未在文档中说明的append方法,后续将会同步优化参数的传递

guansong8079776 commented 4 years ago

模型定义

class JobBaseModel extends AbstractModel
{
    protected $tableName = 'tasks';
    public $append =  ['status_name','type_name','group_name']; // 使用append属性覆盖,使用append方法表现也是一样
    /** @var string[] 状态名称定义 */
    const MODEL_STATUS = [
       1 => '未开始',
       2 => '进行中',
    ];
    /**
     * 读取器 - 状态
     * @param $value
     * @param $data
     * @return string
     */
    public function getStatusNameAttr($value,$data) // 去除参数即可
    {
        return self::MODEL_STATUS[$value] ?? '未知状态';
    }
}

调用模型

    $map['task_id'] = $taskId;
    $task = JobBaseModel::create()->get($map);
    var_dump(json_encode($task));
xuanyanwow commented 4 years ago

如上回复,该append特性未在文档中编写,是一个新更新的特性,感谢你的反馈,后续升级orm版本将会解决这个问题

guansong8079776 commented 4 years ago

谢谢!