如何在控制器中传递用户名?

时间:2019-04-03 11:53:08

标签: laravel mongodb session controller

用户名存储在我的会话中。我正在休假管理模块上。 我的请假模块的表包含以下字段 用户名,休假类型,持续时间,状态和操作。 除了用户名之外,我还可以在列表视图中插入并列出所有详细信息。 但是我的用户名是存储在会话中。 我如何从会话中获取它并存储在“用户名”字段中的数据库中?

查看文件中的代码

@if(Session::has('key'))
    <?php $username = Session::get('key')['username']; ?>
@endif

    <input type="hidden" name="username" value="<?php echo $username ?>">

我的控制器文件中的代码

 public function leaveApplication(Request $request)
    {
        $leave = new LeaveManagement();

        $leave->username = $request->get('username');
        $leave->leaveType = $request->get('leaveType');
        $leave->startDate = $request->get('startDate');
        $leave->endDate = $request->get('endDate');
        $leave->fromLeave = $request->get('fromLeave');
        $leave->fromHalfDayLeaveType = $request->get('fromHalfDayLeaveType');
        $leave->toLeave = $request->get('toLeave');
        $leave->toHalfDayLeaveType = $request->get('toHalfDayLeaveType');
        $leave->fullDayLeave = $request->get('fullDayLeave');
        $leave->typeOfLeave = $request->get('typeOfLeave');
        $leave->reasonForLeave =$request->get('reasonForLeave');
        $leave->status = 'Pending';

        $leave->save();

        return redirect('leave');
    }

3 个答案:

答案 0 :(得分:0)

登录后,Auth将在其中维护用户表字段。您可以像这样访问它-

echo Auth::user()->name or echo Auth::user()->email

它将返回预期值:“用户名”和“ useremail@domain.com”。

如果您不使用Auth,则可以从会话中获取用户名,然后将其保存在数据库中-

$user = session()->get('user')
$username = $user->username;

$leave = new LeaveManagement();
$leave->username = $username;
$leave->save();

希望这会对您有所帮助。

答案 1 :(得分:0)

您可以使用Laravel全局会话帮助程序:session(keyName)
要从会话获取用户名并将其存储在数据库中:

$username = session('username');

$leave = new Leave();
$leave->username = $username;
$leave->save();

有关Laravel会话的更多信息,请参见Laravel Session

答案 2 :(得分:0)

您可以从会话中获取对象并访问其属性。类似

$user = session()->get('user')
$username = $user->username

或登录后,您可以使用以下方式访问用户的用户名:

auth()->user()->username