如何最佳地获得id用户?

时间:2018-01-04 11:22:08

标签: php laravel laravel-5.5

我现在从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
            ]
        );
    }
}

3 个答案:

答案 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;

您可以通过

获取当前经过身份验证的用户的ID
Auth::id();