2017-02-13 4 views
2

Ich baue einen Zeit-Tracker, damit Benutzer ein- und auschecken können.Laravel - Anzeigen und Ausblenden von Elementen je nach Benutzerstatus

So gibt es zwei Schaltflächen, die ich nur einzeln mit der Blade Templating Engine anzeigen möchte. Diese Schaltflächen fügen in die Datenbank datetime von Beginn und Ende des Arbeitstages ein.

Es ist kein eingeloggter Status. Der Benutzer kann beginnen Tag arbeiten, sich wieder abzumelden oder was auch immer, und dann sehen, nur Taste überprüfen, da Benutzer in geprüft.

@if (//checked in) 
    // button 
@endif 

Ich glaube, dass es eine Variable sein zu setzen und dann zu prüfen, es ist Zustand und zeigen ein Taste.

Frage:

Wie richtig Status des Benutzers speichern? Speichern Sie es in einer Datenbank? Oder was soll ich sonst noch benutzen?

+0

halten Ja , speichern Sie es in der Datenbank.Bitte fügen Sie weitere Informationen hinzu, was ist das Ein-/Auschecken? ist es der Login-Status eines Benutzers? – Jerodev

Antwort

1

eine Tabelle erstellen:

user_status_in (id, user_id, date, time,status) 

Stellen Sie sicher, dass es einen eindeutigen Index für user_id, date, status (also die DB lässt einen Benutzer am selben Tag nicht zweimal ein- oder auschecken.

Ihr Benutzermodell:

public function checkIn() { 
     return $this->hasMany(UserCheckIn::class,"user_check_in"); 
} 

public function checkedInToday() { //True if checked in today 
     return $this->checkIn() 
      ->where("date","=",date_format(date_create(), "Y-m-d")) //today 
      ->where("status","=",1) 
      ->count() > 0; 

} 

UserCheckIn.php

class UserCheckIn extends Model { 
     public function user() { 
      return $this->belongsTo(User::class); 
     } 
} 

Ihrer Ansicht nach kann man so etwas tun:

@if (auth()->user()->checkedInToday()) 
    //Check out button 
@else 
    //Check in button 
@endif 

Sie einen Benutzer in überprüfen können etwas tun wie:

$c = new UserCheckIn(); 
$c->user_id = auth()->user()->id; 
$c->date = date_format(date_create(), "Y-m-d")); 
$c->time = date_format(date_create(), "H-i-s")); 
$c->status = 1; 
$c->save(); 

Oder mit dem Status 0 zu überprüfen.

diese Weise können Sie auch einen historischen Rekord von Check-In/Outs

3

Der einfachste Weg ist, den Status in der Tabelle users zu speichern. Erstellen Sie eine Spalte boolean Typ status benannt.

Dann Status eines aktuellen Benutzers überprüfen Sie in der Lage sein auth() globalen Helfer zu verwenden:

@if (auth()->check() && auth()->user()->status) 
    // button 
@endif 

Oder Auth Fassade:

@if (Auth::check() && Auth::user()->status) 
    // button 
@endif 
0

Mit Laravel> 5,3

@if (Auth::check()) 
    You are signed in. 
@else 
    You are not signed in. 
@endif 

oder

@unless (Auth::check()) 
    You are not signed in. 
@endunless 

oder

@auth 
    // The user is authenticated... 
@endauth 

@guest 
    // The user is not authenticated... 
@endguest 
Verwandte Themen