Php 在appends属性中获取服务

Php 在appends属性中获取服务,php,laravel,Php,Laravel,我有一个模型,看起来像这样: 奖励获得模式: class RewardsEarnedModel extends BaseModel{ protected $appends = ['readable_date']; public function getReadableDateAttribute(){ // How do I access the User Service? return $this->userService->dat

我有一个模型,看起来像这样:

奖励获得模式:

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();
}
namespace App\Services;
class User {
    use Time;
}
namespace App\Traits;
trait Time{
    public function dateTime($datetime = null){
        /* Snipped code */
    }
}
然后,我从控制器运行模型,如下所示:

奖励管理员:

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();
}
namespace App\Services;
class User {
    use Time;
}
namespace App\Traits;
trait Time{
    public function dateTime($datetime = null){
        /* Snipped code */
    }
}
我的
用户
服务类附带了一个
时间
特征。在这个特性中有一个函数
dateTime
,我想从我的
getReadableDateAttribute
方法访问它,但我似乎不能这样做。如何从我的
用户
服务访问它

用户服务:

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();
}
namespace App\Services;
class User {
    use Time;
}
namespace App\Traits;
trait Time{
    public function dateTime($datetime = null){
        /* Snipped code */
    }
}
时间特征:

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();
}
namespace App\Services;
class User {
    use Time;
}
namespace App\Traits;
trait Time{
    public function dateTime($datetime = null){
        /* Snipped code */
    }
}

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

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

$user->readable\u date
是否有效?
$user->readable\u date
不是一个选项。我要做的是格式化用户保存时区中数据库中的值,只需将该特征放入用户模型中,即可从该模型中使用它。然后使用
$this->dateTime
即可毫无问题地使用它。