获取附加属性中的服务

时间:2016-02-26 20:22:53

标签: php laravel

我的模型看起来像这样:

奖励获奖模式:

class RewardsEarnedModel extends BaseModel{

    protected $appends = ['readable_date'];

    public function getReadableDateAttribute(){
        // How do I access the User Service?
        return $this->userService->dateTime($this->attributes['created_at'])->readableDate;
    }

    public function scopeSums($query, User $user, $offset = 0, $limit = 50){
        return $query-> /* add items here (snipped) */;
    }

}

然后我从我的控制器运行这样的模型:

奖励控制器:

public function getRewards(Request $request, User $user, $date = null){
    $rewards = new RewardsEarnedModel;
    $rewards = $rewards->Sums($user);

    $sums = $rewards->get()->toArray();
}

我的User服务类附加了Time个特征。在该特性中有函数dateTime,我想从我的getReadableDateAttribute方法访问它,但我似乎无法这样做。如何从我的User服务访问它?

用户服务:

namespace App\Services;
class User {
    use Time;
}

时间特征:

namespace App\Traits;
trait Time{
    public function dateTime($datetime = null){
        /* Snipped code */
    }
}

1 个答案:

答案 0 :(得分:0)

我可以通过app()->User访问用户服务,这是最终结果:

public function getReadableDateAttribute(){
    return app()->User->dateTime($this->attributes['created_at'])->readableDate;
}