【问题标题】:How to limit the data entry to database in Laravel 5.7如何在 Laravel 5.7 中限制数据输入到数据库
【发布时间】:2019-07-10 07:01:55
【问题描述】:

如何限制写入数据库的数据。

我正在尝试将银行详细信息映射到地区。我想将银行详细信息的输入限制为 1 个地区。

准确地说,用户应该只能为一个地区创建一个银行名称。当他们尝试创建新记录时,他们将被错误地处理,指出只应创建一个记录。

数据库表:

District 
| id 
| district_name

Bank
| id 
| bank_name
| district_id

我曾想过将不在银行表中的地区的数据显示到选择菜单中。

我将如何在雄辩的关系中限制这一点,或者还有其他选择,

另一个选项是将结果限制为最新创建的银行 ID。但我不认为这是一个值得考虑的好主意。

我试过了,

银行控制器,

使用银行;

 public function create()
    {
        $districts = Districts::all();
        $banks = Bank::all();
        foreach($banks->districts as $bank)
        $banks1 = $bank->district_name;
        return($bank1);

        // return view('bank-create',compact('districts'));
    }

上面的代码不行,我刚试了下,还是打不通。

我期待查询的结果传递给下面的选择,

 <select name="district_option1" class="form-control  ml-5" id="">
                        @foreach ($bank1 as $banks1)
                        <option value="{{$banks1->id}}">{{$banks1->district_name}} </option>
                        @endforeach
                    </select> 

我的模特:

银行

public function districts(){
    return $this->belongsTo('App\Districts','district_id','id');
}

地区:

 public function bank(){
     return $this->hasOne('App\Bank','id','district_id'); }

【问题讨论】:

  • 您的错误是您没有在选择下拉列表中获得所有银行?
  • 你的foreach循环不对
  • 也添加您的输入
  • 对不起,如果问题让您感到困惑,如果该地区没有银行,我正在尝试添加新银行。我找到了一种方法来限制这一点,即不在选择下拉列表中显示该地区。 @KamalPaliwal
  • @ElnurIbrahim-zade 是的,代码是错误的,我试图表达我的想法

标签: php mysql database laravel eloquent


【解决方案1】:

您可以为此目的使用unique 验证。

    public function create(Request $request)
    {
        $request->validate([
           'district_id' => 'reuqired|unique:banks,district_id'
        ]);
     }

您在这里检查是否有该地区的任何记录。

【讨论】:

  • 我仍然添加到我的控制器中,有一个条目。而且它只是限制重复名称
猜你喜欢
  • 2019-09-25
  • 2019-07-12
  • 2019-05-08
  • 2019-03-01
  • 2019-05-01
  • 2019-08-01
  • 2019-08-20
  • 2019-09-02
  • 2015-05-23
相关资源
最近更新 更多