在製作某個表時,發現有個 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 檔案) 可以這樣表示:
記得,重跑 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
對了,如果有比較適合的方式可以達到一樣的功能,就麻煩留言一下讓更多人知道 :) 謝謝!
比方說有張記錄使用者權限的表格,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
對了,如果有比較適合的方式可以達到一樣的功能,就麻煩留言一下讓更多人知道 :) 謝謝!
沒有留言:
張貼留言
若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD