【问题标题】:Unique value check during updating in laravellaravel 更新期间的唯一值检查
【发布时间】:2017-02-18 21:42:56
【问题描述】:

我已尝试解决此问题。我已经关注了这个问题的几个答案,我已经尝试过这个解决方案,但我没有成功。

这是我的控制器功能...

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,
           ]
        );
    }

它显示以下错误:

SQLSTATE[42S22]:找不到列:1054 未知列 'id' 在 'where 子句'

(SQL: 选择 count(*) 作为聚合 来自产品类别 其中 category_name = 测试和 id 9 )

我的桌子:

表名:product_categories

字段名称:category_idcategory_name

【问题讨论】:

  • 你在保存时漏掉了任何代码??
  • 您是否遗漏了任何代码,原因是该错误与现有代码无关...
  • 实际上,您的product_categories 表中似乎没有“id”列,因此验证器失败。您是否尝试将唯一性检查定位在另一个 id 字段上,也许是 category_id 本身?

标签: php laravel validation


【解决方案1】:

您可以在模型类中有以下内容

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;

    }

在控制器中你可以像下面这样调用

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

【讨论】:

    【解决方案2】:

    您应该查看表中的列,看看列名是否有任何错误,并检查是否缺少任何代码。

    在你的 where 条件下,尝试使用以下代码:

     $cat=\DB::table('product_categories')
            ->where('category_id', '=', $category_id)
            ->first();
    

    【讨论】:

      猜你喜欢
      • 2016-05-10
      • 2015-03-27
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2014-06-28
      • 1970-01-01
      相关资源
      最近更新 更多