2016-08-28 6 views
0

私はLaravelを使用していますが、これは一般的なUI /表示の質問です。 Shepherdのようなライブラリを使用して、ユーザーのUIのツアーを表示したいとします。ページへの最初の訪問時にのみ表示するにはどうすれば実装できますか?初めての訪問時にUIツアー/ガイドを表示する方法

user.idと各ページのガイドを保持するテーブルを作成するよりも良い解決策がありますか?このようなもの:

------------------------------------------ 
| id | user_id | seen_page1 | seen_page2 | 
------------------------------------------ 
| 1 |  5 |   0 |   0 | 
------------------------------------------ 
| 2 |  6 |   1 |   0 | 
------------------------------------------ 
... 

私はちょうど私が各訪問で行う必要がある追加のクエリに懸念しています。

+2

ユーザーとページの多対多の関係をお勧めします。ユーザーが特定のページにアクセスすると、レコードがピボットテーブルに追加されます。 –

答えて

0

私は@MinaAbadirの提案を使用しました。

  • 私は今、あなたは$user->pages->contains($user);を行うことができます私のピボットテーブル
  • 実行php artisan make:migration pagephp artisan make:migration:pivot pages users
  • を作成し、ビューに戻り値を渡すためにLaravel Generatorsを使用しています:ここでそれを行う方法についてのガイドです。
  • 、ガイド/ツアー一度$user->pages()->attach($page);を実行しますが、私は0年代と1年代の行全体を保存するか、それをクライアント側に保存するよりも優れている。このように感じるページ

のために示されています。

2

はい、localStorageを使用することはオプションです。

if (!localStorage.getItem('viewed')){ 
    tour.start(); 
    localStorage.setItem('viewed','yes'); 
    } 
+0

はlocalStorageを使用しないため、ユーザーがブラウザ/デバイスを変更するたびにGuide/Tourが表示されますか? – Grigio

+0

あなたの質問に答えてください。はい。あるいは、Shepherdツアーで新しいユーザーを別のルートに送ることもできます。あなたが正しく理解すれば、ログインした後にユーザーが特定のページを見たかどうかを追跡しようとしています。そのテーブルを設計する別の方法がありますが、その情報のクエリを行う方法はありません。 – Ryderpro

関連する問題