【发布时间】:2015-02-26 14:43:25
【问题描述】:
我正在尝试通过制作另一个模型Sessions 在会话表中添加额外信息。我正在使用以下问题答案中详述的方法;
Laravel session table add additional column
表格
字段:
- id - varchar(50) - laravel 在这里存储一个 40 个字符的字符串
- 有效负载 - 中文本 - 通常为 265 个字符的字符串
- last_activity - int(11)
- user_id - bigint(20)
- type - varchar(15) - default('biz')
- created_at - 时间戳 - 默认(CURRENT_TIMESTAMP)
型号
class Sessions extends BaseModel
{
protected $table = 'sessions';
protected $fillable = array(
'id',
'payload',
'last_activity',
'user_id',
'type',
'created_at');
public static function getCurrent()
{
return Sessions::find(Session::getId());
}
}
控制器
public function postLogin()
{
if (\Auth::biz()->attempt(\Input::only(array('email', 'password')),
\Input::get('persist', 'no') == 'yes')) {
$session = Sessions::getCurrent(); // returns NULL
// fields getting values
$session->save();
return \Redirect::route('marketer.home');
} else {
return \Redirect::back()->withInput()->with('loginFail', true);
}
}
我正在使用 laravel v4.2.16 和基于数据库的会话管理。 Session::getId() 函数不会返回存储在数据库中的 id,因此我无法通过我的 Sessions::getCurrent() 方法获取当前会话的模态。
该方法之前有效,因此我们在其上构建了许多优化查询。
【问题讨论】:
-
表存在于数据库中吧? Session::getId() 返回什么?空?
-
@VitoNordloh 是的,该表存在。我试过用 dd(Session::getId()) 运行它,它返回一个类似编码的字符串,它与 id 列下的任何内容都不匹配。
-
@UmairAhmed,在同一个会话中?还是重新登录?
-
@LeaTano 不,同一个会话。
-
@UmairAhmed session_id 是完全不同还是更短?如果它更短,请确保会话列长度足够大。如果 session_id 完全不同,请与我们分享完成的代码......我可以帮助你。
标签: php session laravel eloquent