Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止在只查询某个列时涉及Laravel访问器_Php_Laravel_Eloquent - Fatal编程技术网

Php 防止在只查询某个列时涉及Laravel访问器

Php 防止在只查询某个列时涉及Laravel访问器,php,laravel,eloquent,Php,Laravel,Eloquent,我已经在我的表格模型上设置了日期格式访问器, 这是我的模型对于访问者的外观 class Agent Authenticatable implements MustVerifyEmail { protected $appends = ['created_at_formatted']; ... public function getCreatedAtformattedAttribute() { return $this->create

我已经在我的表格模型上设置了日期格式访问器, 这是我的模型对于访问者的外观

class Agent  Authenticatable implements MustVerifyEmail
{
    protected $appends = ['created_at_formatted'];

    ...

     public function getCreatedAtformattedAttribute()
     {
         return $this->created_at->format('d-m-Y');
     }
   ...
}
如果我从表中检索所有数据

但是如果我只取一些数据,问题就来了,例如,我只取特定用户的
phone
email
,并且在
栏中创建的
不涉及

我对controller的查询如下所示:

    public function getAgentDetail($id)
    {
        $agDetail = Agent::where('id','=' ,50)->get(['phone','email']);
        return response()->json($agDetail);
    }
上面的查询给了我一个错误:

Symfony\Component\Debug\Exception\fatalthrowable错误

在null上调用成员函数format()

我认为这是因为访问器没有被赋予任何价值(在本例中,
创建于
), 因此,我将模型上的访问器更改为:

    public function getCreatedAtformattedAttribute()
    {
         $this->created_at
                ? $this->created_at->format('d-m-Y')
                : null;
    }
它只给出一个条件,如果没有设置,它将返回一个空值, 错误消失并返回此集合:

[
  {
    phone: "086741111111",
    email: "example@jab.com",
    created_at_formatted: null
  }
]
我想要的是,当只选择specify column时,如何忽略所涉及的访问器,这与访问器无关


例如,我只想获得
电话
电子邮件
,而不是在格式化时创建的
删除以下行并重试:

protected $appends = ['created_at_formatted'];

可以调用acessor而不附加它们。此外,您可能需要将函数名更改为
getCreatedAtFormattedAttribute
,以遵守Laravel的约定。

删除以下行,然后重试:

protected $appends = ['created_at_formatted'];
可以调用acessor而不附加它们。此外,您可能希望将函数名更改为
getCreatedAtFormattedAttribute
,以遵守Laravel的约定