【问题标题】:Eloquent query not finding user by email雄辩的查询未通过电子邮件找到用户
【发布时间】:2017-11-24 11:49:36
【问题描述】:

我正在尝试使用 'email' = $email 从数据库中查找用户并向他们发送电子邮件。当我尝试回显 $user 时,我收到一个错误,指出它不是字符串。

public function sendEmail($user)
{
    Mail::to($user['email'])->Send(new VerifyEmail($user));
}

public function verifyEmail($email)
{
    $user = User::where('email',$email);

    $this->sendEmail($user ); //mail won't send

    return view('auth.email.verifyemail')->with('email', $email);
}

请帮忙,谢谢!

【问题讨论】:

  • 您需要指定您的问题。我非常不清楚。究竟会发生什么? $thisUser 包含什么? verifyemail() 的班级是什么样的?错误信息?检查你的错误日志?是数据库调用失败还是发送邮件失败?

标签: php database laravel eloquent


【解决方案1】:

除了无法找到用户之外,您的代码还有一些问题,但让我们先解决这个问题。

说明

User::class 上调用where() 方法将返回Illuminate\Database\Query\Builder 的实例,而不是您要查找的记录。

要获取记录集合,您可以流畅地调用get() 方法,或者在您的情况下,您可以通过调用first() 来获取第一个结果。

更多主题:Retrieving Single Models / Aggregates

解决方案

$user = User::where('email', '=', $email)->first();

if(!$user) {
  // handle the case if no user is found
}

echo $user->email // access the user's email address

然后您可以调用您的 sendmail 方法或任何您需要的方法并传递 $user 实例,例如 $this->sendmail($user)

【讨论】:

    【解决方案2】:

    $thisUser 只有一个查询。您需要执行它以获取用户。尝试获取第一条记录:

    $thisUser = User::where('email',$email)->first();
    

    【讨论】:

      猜你喜欢
      • 2013-11-10
      • 1970-01-01
      • 2014-04-12
      • 2016-09-16
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      相关资源
      最近更新 更多