Php 如果已经有';1';在数据库中,数据库赢得';我不接受另一个';1';。它只接受';0';

Php 如果已经有';1';在数据库中,数据库赢得';我不接受另一个';1';。它只接受';0';,php,laravel-5,Php,Laravel 5,我有一个列是默认的,它接受1或0,这取决于是否选中了“默认”复选框 我的create.blade.php <div class="form-check disabled"> <label class="form-check-label"> <input class="form-check-input" type="hidden" value='0' name="is_default"> <input class="form-check

我有一个列
是默认的
,它接受1或0,这取决于是否选中了“默认”复选框

我的
create.blade.php

<div class="form-check disabled">
  <label class="form-check-label">
    <input class="form-check-input" type="hidden" value='0' name="is_default">
    <input class="form-check-input" type="checkbox" value='1' name="is_default">
   Default Variant
  </label>
</div>
在我的变体表中,我有一个
product\u id
,它是products表的外键。我有一个默认的
列。现在,一个产品可以有许多变体,但每个产品应该只有一个默认变体

所以它就像,(如果复选框被选中)

查找
中是否有“1”是默认值,如果没有“1”,则数据库将保存它,否则它将保存一个零并返回一个提示:“应该只有一个默认变量”


我不知道我的解释是否解释得很好,但我感谢任何帮助。

它设置为唯一吗?它不能设置为唯一,因为变量表中有很多产品(因此有很多产品id)。我只是对具有相同产品ID的条目进行了说明。在存储新的默认值之前,请将具有该产品ID的所有其他行的
is\u default
字段设置为
0
。我怀疑是否有办法自动执行此操作,您只需自己编写代码即可。
    DB::transaction(function() use ($request){
        $variant = Variant::firstorCreate([
            //some more code here
            'is_default'        => $request->is_default
        ]);

    }); 
$checkdefault = Variant::where('product_id',$product)...