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
即可毫无问题地使用它。