Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何以及在何处设置会话变量(如果可能,设置一次)_Php_Laravel - Fatal编程技术网

Php 如何以及在何处设置会话变量(如果可能,设置一次)

Php 如何以及在何处设置会话变量(如果可能,设置一次),php,laravel,Php,Laravel,我正在学习Laravel并在Laravel 5.8的基础上建立一个博客。现在我已经在数据库中植入了一些假用户以进行测试。因为用户是随机的,所以我想在刀片模板(我的布局模板)中显示用户的用户名 我所做的似乎是错的。我已经在我的routes/web.php文件中设置了会话变量: 使用App\User; 会话(['user'=>user::first()]); 会话(['user_id'=>user::first()->id]); 路由::获取('/','PostController@index');

我正在学习Laravel并在Laravel 5.8的基础上建立一个博客。现在我已经在数据库中植入了一些假用户以进行测试。因为用户是随机的,所以我想在刀片模板(我的布局模板)中显示用户的用户名

我所做的似乎是错的。我已经在我的routes/web.php文件中设置了会话变量:

使用App\User;
会话(['user'=>user::first()]);
会话(['user_id'=>user::first()->id]);
路由::获取('/','PostController@index');
在我的刀片文件中,我访问它们:


我用Laravel自制的博客(登录:{{Session::get('user')->email})
起初,它运行良好,尽管我不确定这是否是正确的方法。但现在我克隆了我的项目并尝试迁移数据库(在一个空数据库中),我遇到了几个错误:

laravel.users表不存在

所以我发现,在我的routes/web.php文件中,基于数据库值设置会话变量是不可能的

我在哪里或如何设置这些会话变量,使其只设置一次变量(如果可能),而不会出现空数据库问题


谢谢。

您可以使用Laravel
Auth::loginUsingId(1)
将按您将指定的用户id登录用户。在这种情况下,您无需在会话中设置详细信息

作为参考,你可以查看一下

但是,如果您想使用会话,那么您可以在这里做这些事情


您只需要创建新的中间件并在此处添加代码。之后,您可以将此中间件添加到要使用此中间件的路由。

即使在运行迁移时,
web.php
routes文件也始终由Laravel加载。因此,当您尝试迁移应用程序时,它将尝试从
web.php
文件中的数据库加载第一个用户。由于users表还不存在,因此会出现一个SQL错误

这段代码确实不应该放在这里,相反,您应该看看


更好的方法是使用来自Laravel的。这为您提供了大量的函数来操作和获取当前登录用户。

该用户尚未通过身份验证。它只给了我一个登录的用户名。是吗?我喜欢这个主意。谢谢我想我会那样做的。不过,我还是对设置会话变量的最佳实践感兴趣。谢谢您的快速帮助。