![[Laravel]バリデーションルールを使って特定のカラムで存在チェックする方法](https://www.yukiiworks.com/wp-content/uploads/2019/05/laravel.png)
はじめに
Laravelでバリデーションを使用する際にルール(rules)で特定のテーブルのカラムを使用して存在チェックする方法です。
例
以下のようなusersテーブルがあるとします。
| id | name | password |
このような場合には通常以下のようなrulesを設定すると存在チェックができます。
1 2 3 4 5 6 | public function rules() { return [ 'id' => ['exists:users'], ]; } |
ですが例えば以下のようなuser_infoテーブルがあったときリレーション先のカラムから存在チェックをしたい(user_infoテーブルのuser_idがuserテーブルのid列に存在するかをバリデーションでチェックしたい)場合に下記のようにrulesを書くとエラーになります。
| id | user_id | address | phone_number | age |
1 2 3 4 5 6 | public function rules() { return [ 'user_id' => ['exists:users'], ]; } |
具体的には
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘user_id' in 'where clause' (SQL: select count(*) as aggregate from users where user_id = 1)
このようなエラーが出ると思います。
解決方法
例のような場合、以下のようにカンマで区切ってカラムを指定すると、特定のテーブルの特定カラム名でチェックすることが可能です。
1 2 3 4 5 6 | public function rules() { return [ 'user_id' => ['exists:users,id'], ]; } |
以上です。
![[javascript]ブラウザの戻るボタンで戻ってきた時になんらかの処理をする方法](https://www.yukiiworks.com/wp-content/uploads/2019/05/javascript-300x173.png)
![[Laravel]Requestに値を追加して処理する方法](https://www.yukiiworks.com/wp-content/uploads/2019/05/laravel-300x209.png)
![[Flutter]ListViewの区切り線をつけたときにできる余白を消す方法](https://www.yukiiworks.com/wp-content/uploads/2020/08/flutter-150x150.png)
![[javascript]ブラウザの戻るボタンで戻ってきた時になんらかの処理をする方法](https://www.yukiiworks.com/wp-content/uploads/2019/05/javascript-150x150.png)
![[Swift]UITableViewで余分なセルを表示しない方法](https://www.yukiiworks.com/wp-content/uploads/2019/04/swift-150x150.png)
![[AWS]Node.jsでSSMパラメータストアの値を取得する](https://www.yukiiworks.com/wp-content/uploads/2020/03/aws-eyecatch-960x504-1-150x150.png)

![[iOS]ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs starting from April 2020について](https://www.yukiiworks.com/wp-content/uploads/2019/09/Xcode-150x150.png)
![[Node.js]AWS Lambda上で日本現在時刻を取得する](https://www.yukiiworks.com/wp-content/uploads/2020/04/lambda30-150x150.png)
![[AltBeacon]E/CycledLeScannerForLollipop: Scan failed: app cannot be registeredエラーについて](https://www.yukiiworks.com/wp-content/uploads/2019/10/android-studio-e1585186990750-150x150.jpg)
