2017-02-13 6 views
2

ユーザーがチェックインおよびチェックアウトできるように時間トラッカーを構築しています。Laravel - ユーザーの状態に応じて要素を表示および非表示にします。

ブレードテンプレートエンジンを使用して一度に1つだけ表示したいボタンが2つあります。 このボタンは、作業日の開始日と終了日をデータベースに挿入します。

ログイン状態ではありません。ユーザーがチェックインされているため、ユーザーは、ボタンのみをチェックしてくださいそして、一日の作業を開始ログアウトまたは何を、とすることができます。

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

を私が設定し、それが国家のチェックおよび表示する変数が存在すべきであることを感じてボタン。

質問:

ユーザーのステータスを正しく保存するにはどうすればよいですか?それをデータベースに保存しますか?それ以外に何を使うべきですか?

+0

はいそれをデータベースに格納します。いくつかの情報を追加してください、このチェックイン/チェックアウトは何ですか?それはユーザーのログインステータスですか? – Jerodev

答えて

1

は、テーブルを作成します。

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

user_id、date、statusの一意のインデックスがあることを確認してください( DBでは、ユーザーが同じ日に2回チェックインまたはチェックアウトすることはできません。

あなたのユーザモデル:あなたはで、ユーザーを確認することができます

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

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); 
     } 
} 

あなたのビューでは、のような何かを行うことができます次のようにしてください:

$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(); 

またはステータス0でチェックアウトしてください。

あなたもLaravelで

3

最も簡単な方法は、usersテーブルにステータスを保存することです。 statusという名前のbooleanタイプの列を作成します。

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

またはAuthファサード:

次にあなたがauth()グローバルヘルパーを使用することができます、現在のユーザーの状態を確認するために

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

チェックイン/アウトの歴史的な記録を残すことができますこの方法では> 5.3

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

または

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

または

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

@guest 
    // The user is not authenticated... 
@endguest 
関連する問題