【问题标题】:I need to show all user's data with how many days ago they inserted it into the database?我需要显示所有用户的数据,他们在多少天前将其插入数据库?
【发布时间】:2022-01-02 14:09:43
【问题描述】:

我正在尝试使用 Carbon 获取日期计数。就像 20 天前创建的一样。 我想以 JSON 格式的 API 发送数据。

我想从控制器发送它。这是我的控制器代码。

use Carbon\Carbon;

public function index()
    
    {
        $now = Carbon::now();
        $users = User::all('first_name', 'last_name', 'profile_img', 'created_at');
        $date = $users->created_at->diffInDays($now);  
        return response()->json(['data' => $users , 'date' => $date]);
    }

但是我从邮递员那里得到了错误

没有日期计数,我可以获得所有数据而不会出现任何错误。所以我的问题就在这里。 请告知我哪里错了。谢谢

【问题讨论】:

  • 提示:$users 是一个列表...您想获取哪个用户的创建日期?
  • 是的,用户都是总用户的列表。从今天开始,我需要 created_at 总天数。我不想搜索。我需要所有用户数据以及他们插入信息的天数。
  • 我需要显示所有用户的数据以及他们在多少天前将其插入数据库。

标签: php laravel api


【解决方案1】:

您还可以通过模型访问器将日期格式化为不同的格式

protected function serializeDate(DateTimeInterface $date)
    {
        return $date->format('Y-m-d H:i:s');
    }

【讨论】:

    【解决方案2】:

    我已经使用 model accessor laravel 完成了。在User 模型中我正在创建一个函数

    public function getCreatedAtAttribute($created_at)
        {
            return Carbon::parse($created_at)->diffInDays(now());
        }
    

    Controller,我使用了这段代码。

    public function index()
        {
            $users = User::all('first_name', 'last_name', 'profile_img', 'created_at');
            return response()->json(['data' => $users], 200);
        }
    

    现在 IT 发送了一个很好的结果

    谢谢大家。

    【讨论】:

      【解决方案3】:

      首先,您尝试从对象集合中获取数据。它可能是采摘的,或者您可以在此处使用 for each 循环来修改您的数据。像-

      $date = array();
      
      foreach($users as $user){
       $date[] = $user->created_at->diffInDays($now); // or $user->created_at->diffForHumans();
      }
      

      对于 API,您可以使用资源或 Laravel 存储库模式。

      【讨论】:

      • 谢谢。好像我想以 JSON 格式发送数据。我可以使用模型访问器吗?
      • 您必须将现成的数据发送到 JSON 响应。您必须在发送响应之前使用该访问器。客户端将无法访问您的模型访问器或您使用的任何东西,您可以从您的视图文件或其他人访问它们。最好使用模式或资源进行修改。
      猜你喜欢
      • 1970-01-01
      • 2018-09-04
      • 2013-01-23
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      相关资源
      最近更新 更多