php - Laravel 查询构建器获取用户登录记录

标签 php laravel laravel-query-builder

我有一个 Laravel API,并且有一个在用户登录时运行的函数,当他们登录时,我想找到链接到其帐户的关联域,并根据域的通知是否已发出来获取域过期或 SSL 过期。

我的代码正在运行,但我注意到,它正在查找所有域,而不管用户 ID,而我只想获取登录用户的域...

我在这里做错了什么?

/**
 * Log In (log a user into the application)
 *
 * @param  Request  $request
 * @return Response
 */
public function login(Request $request)
{

    // update the last login at time
    try {

      $user = User::findOrFail(Auth::id());
      $user->last_login_at = Carbon::now()->toDateTimeString();
      $this->resetExpiryAlerts($user, Auth::id());
      $user->save();

    } catch (\Exception $e) { }

    // success
    return $this->respondWithToken($token);
}

/**
 * Reset expiry alerts
 *
 */
public function resetExpiryAlerts($user, $id)
{

  $domains = Domains::where('user_id', $id)
                    ->where('domain_last_notified_at', '!=', null)
                    ->orWhere('ssl_last_notified_at', '!=', null)
                    ->get();

  if (count($domains) > 0) {
    foreach ($domains as $key => $domain) {

      if (
        isset($domain->domain_last_notified_at) &&
        ($user->last_login_at >= $domain->domain_last_notified_at)
      ) {
        $domain->domain_last_notified_at = null;
      }

      if (
        isset($domain->ssl_last_notified_at) &&
        ($user->last_login_at >= $domain->ssl_last_notified_at)
      ) {
        $domain->ssl_last_notified_at = null;
      }

      $domain->save();
    }
  }

}

我已经从示例中删除了一些不相关的代码,但我认为我在查询中做错了......

$domains = Domains::where('user_id', $id)
                  ->where('domain_last_notified_at', '!=', null)
                  ->orWhere('ssl_last_notified_at', '!=', null)
                  ->get();

因为它似乎会返回任何域,而不管用户 ID。

最佳答案

我认为问题出在您的查询中。最后两个位置应该分组。请尝试以下操作:

Domains::where('user_id', $id)
       ->where(function ($query) {
           $query->whereNotNull('domain_last_notified_at')
                 ->orWhereNotNull('ssl_last_notified_at');
       })
       ->get();

关于php - Laravel 查询构建器获取用户登录记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65550433/

相关文章:

php - 通过curl在PHP中获取用户个人资料图像不起作用

php - 如何自定义 Laravel whereBetween 子句使上限不受限制?

php - Laravel Eloquent 查询生成器 - 与关系组求和

laravel - 使用 Laravel Eloquent 获取所有最新记录

php - jQuery 复选框值依赖提交按钮操作

php - 修剪尾随零而不强制转换为 float

php - Laravel 5 更改表单请求验证行为失败

laravel - 如何在laravel中设置 View 文件路径?

php - Laravel Concat 获取名字+中间名+姓氏

Laravel nova - 从仪表板重定向