2017-02-18 14 views
0

この問題を解決しようとしました。私はすでにこの質問のいくつかの答えを見ていると私はその解決策を試みたが、私は成功していない。laravelでの更新中のユニークな値のチェック

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause'

(SQL: select count(*) as aggregate from product_categories where category_name = Test and id <> 9)

マイ表:ここ

は私のコントローラ機能は、それは次のエラーを表示「...

public function ProductCategoriesUpdate(Request $request, $category_id) 
{ 
    $cat=\DB::table('product_categories') 
      ->where('category_id',$category_id) 
      ->first(); 

    $v = Validator::make($request->all(), [ 
     'category_name' =>'unique:product_categories,category_name,'.$cat->category_id, 
      ] 
     ); 
    } 

ある

テーブル名:product_categories

フィールド名:category_id,category_name

+0

維持しながら、あなたが任意のコードを見逃しているの? – Sona

+0

あなたはエラーが既存のコードに関係していないので、なぜコードを見逃しましたか... – Sona

+0

実際には、あなたの 'product_categories'テーブルに 'id'カラムがないようです。他の 'id'フィールドの一意性チェックの代わりに、おそらく' category_id'自体をチェックしようとしましたか? –

答えて

0

あなたはあなたがのいずれかのエラーがあるかどうかを確認するためにあなたのテーブルの列を見てみなければならない

//Insert 
$validator = YourClass::validate($request->all(), 'store', ''); 
//Update 
$validator = YourClass::validate($request->all(), 'update', $id); 
0

の下のように呼び出すことができるモデルクラスにコントローラで

public static function validate($input, $scenario, $id = null){ 


    switch($scenario) 
    { 
     case 'store': 
      $rules = [ 
        'category_name' => 'required|unique:product_category 
        ]; 

      break; 


     case 'update': 
      $rules = [ 
        'category_name' => 'required|unique:product_categories'.',category_name,' . $id 

        ]; 
     break; 

    } 

を以下していることができます列名を入力し、欠落しているコードがないかどうかを確認します。あなたのWHERE条件で

、次のコードを使用してみてください:

$cat=\DB::table('product_categories') 
     ->where('category_id', '=', $category_id) 
     ->first(); 
関連する問題