我现在从POST请求获取html表单中的数据。我的收件箱应用。我的代码工作但代码不是最佳的。我无法使用没有循环foreach的电子邮件的id用户。如何在没有循环的情况下获取id用户?
public function send_message(Request $request)
{
if($request->isMethod('post'))
{
$to = $request->to;
$from = Auth::user()->id;
$subject = $request->subject;
$message = $request->message;
$to = User::where('email', $to)->get()->toArray();
foreach ($to as $value) {
$to = $value['id'];
}
echo $to."<br>";
echo $from."<br>";
echo $subject."<br>";
echo $message."<br>";
Message::create(
[
'subject'=>$subject,
'message'=>$message,
'from'=>$from,
'to'=>$to
]
);
}
}
答案 0 :(得分:3)
使用first()
方法:
User::where('email', $to)->first()->id;
如果您只需要ID,请value()
:
User::where('email', $to)->value('id');
first()
和get()
之间的差异已解释为here。
答案 1 :(得分:2)
使用first()方法获取唯一对象
$to = User::where('email', $to)->first()->id;
使用get()
,您必须选择集合中的第一个对象:
$to = User::where('email', $to)->get()[0]->id;
get()返回collection,而first()返回一个用户对象
答案 2 :(得分:2)
很多方式
User::where('email',$email)->first()->id;
OR
User::whereEmail('email')->first()->id;
您可以通过
获取当前经过身份验证的用户的IDAuth::id();