Laravel ORM 兩個 schema(cloumns) 一起 unique

在製作某個表時,發現有個 schema 是需要一起 unique 起來的。

比方說有張記錄使用者權限的表格,user winwu  同時有 article-write, 以及 article-read 兩個權限,就會有兩筆記錄:

id  user_account     user_auth
1   winwu                 article-write
1   winwu                 article-read

但是又不希望  winwu   article-write 有一天又被重複紀錄,就是 winwu 這個人,對應到 article-write 是 unique 的。

在 schema builder  (migration 檔案) 可以這樣表示:

$table->unique(['user_account', 'user_auth']);

記得,重跑 migrate:rollback,然後再重新 migrate,你可以在 seeder 試著故意重複兩次一樣的紀錄,應該就會有 error 告訴你這些 schema 是 unique 的了。

error的訊息會像這樣:
  [PDOException] SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'winwu-article-read' for key ...

參考:
http://stackoverflow.com/questions/16990723/laravel-4-making-a-combination-of-values-columns-unique

對了,如果有比較適合的方式可以達到一樣的功能,就麻煩留言一下讓更多人知道 :) 謝謝!

留言

這個網誌中的熱門文章

[Android] 筆記 手機上測試自己的 APP

解決fatal: Not a git repository (or any of the parent directories): .git錯誤

[Android 筆記] 設定 ImageView 的圖檔來源