2015-07-16 3 views
3

Я пытаюсь добавить функцию на свой сайт, которая показывает количество зарегистрированных пользователей и зарегистрированных пользователей (также показывая имена зарегистрированных пользователей, но я могу выяснить, что часть). В настоящее время я прочитал, что мне нужно изменить файл /config/Session.php «driver» для использования database вместо file ('driver' => env('SESSION_DRIVER', 'database'),). Я нашел статью, которая использует Sentry для выполнения этого (http://laravel.io/forum/03-03-2014-sentry-3-users-online), однако я бы предпочел сделать это, не требуя сторонних файлов. Тем не менее я использовал свою информацию в качестве отправной точки для использования модели для сеанса.Laravel 5.0 показывается зарегистрированным пользователям и зарегистрированным пользователям

Что касается проблем, во-первых, я не могу фактически начать сеанс, чтобы начать сохранение в таблице сеансов моей базы данных даже после изменения Session.php, создания таблицы и ее миграции. Он по-прежнему сохраняется в файлах в/storage/framework/session/(я все еще могу войти в систему и отобразить информацию о сеансе с помощью Session::all()).

mysql> select * from sessions; 
Empty set (0.00 sec) 

Второй вопрос, я не знаю, как мне создать сеанс, если один уже не существует, устроенный в его файл, нет никакого способа, чтобы создать (если кто-то просто открывает сайт и, таким образом, , гость), а также не регистрировать пользователя при выходе из системы (удалите свой зарегистрированный статус, а также их user_id, чтобы они были видны как гость).

Вот мой текущий файл OnlineUser.php:

<?php namespace App; 

use Illuminate\Database\Eloquent\Model; 
// use Sentry; 
use Session; 
use Auth; 

class OnlineUser extends Model { 

    /** 
    * {@inheritDoc} 
    */ 
    public $table = 'sessions'; 

    /** 
    * {@inheritDoc} 
    */ 
    public $timestamps = false; 

    /** 
    * Returns all the guest users. 
    * 
    * @param \Illuminate\Database\Eloquent\Builder $query 
    * @return \Illuminate\Database\Eloquent\Builder 
    */ 
    public function scopeGuests($query) 
    { 
     return $query->whereNull('user_id'); 
    } 

    /** 
    * Returns all the registered users. 
    * 
    * @param \Illuminate\Database\Eloquent\Builder $query 
    * @return \Illuminate\Database\Eloquent\Builder 
    */ 
    public function scopeRegistered($query) 
    { 
     return $query->whereNotNull('user_id')->with('user'); 
    } 

    /** 
    * Updates the session of the current user. 
    * 
    * @param \Illuminate\Database\Eloquent\Builder $query 
    * @return \Illuminate\Database\Eloquent\Builder 
    */ 
    public function scopeUpdateCurrent($query) 
    { 
     return $query->where('id', Session::getId())->update(array(
      'user_id' => !empty(Auth::user()) ? Auth::user()->id : null 
     )); 
    } 

    /** 
    * Returns the user that belongs to this entry. 
    * 
    * @return \Cartalyst\Sentry\Users\EloquentUser 
    */ 
    public function user() 
    { 
     return $this->belongsTo('\App\User'); 
     //return $this->belongsTo('Cartalyst\Sentry\Users\EloquentUser'); # Sentry 3 
     // return $this->belongsTo('Cartalyst\Sentry\Users\Eloquent\User'); # Sentry 2 
    } 

} 

Если кто имеет какую-либо информацию, чтобы помочь мне в решении этих проблем, я был бы очень благодарен. Если вам нужна дополнительная информация, дайте мне знать, и я отвечу, когда смогу.

Спасибо.

ответ

1

В ответ на первый вопрос, где Laravel еще сохранить сессию/хранение/рамки/сессии/

если вы обновили свой файл session.php следующим образом:

ENV ('SESSION_DRIVER' 'база данных')

убедитесь, что вы также обновить файл .env

S ESSION_DRIVER = база данных

+0

Извините за поздний ответ; С тех пор я работаю над другими частями. Это заставило базу данных работать ... Теперь мне просто нужно выяснить, как получить идентификатор пользователя из сеанса ИЛИ сохранить идентификатор пользователя в таблице сеанса, который, похоже, не хочет делать. –

Смежные вопросы