【问题标题】:Check if the value of column 1 and column 2 is not equal to the other rows upon updating in Laravel在 Laravel 中更新时检查第 1 列和第 2 列的值是否不等于其他行
【发布时间】:2019-11-13 18:20:17
【问题描述】:

如何在更新函数中创建一个条件来检查collector_id 和borrower_id 的值不等于其他行。

这是我的桌子的样子

这是我的更新功能

public function update(Request $request, $id)
{

    $this->validate($request, [
        'collector_id' => 'required',
        'borrower_id' => 'required|unique:collector_members'
    ]);

    $requestData = $request->all();

    // dd($requestData);

    $collectormember = CollectorMember::findOrFail($id);
    $collectormember->update($requestData);

    return redirect('dashboard/collector-members')->with('flash_message', 'CollectorMember updated!');
}

【问题讨论】:

  • 你的意思是通过request得到的borrower_id和collector_id与表中已有的borrower_ids和collector_ids不匹配,是不是需要唯一?
  • 是的@N.Djokic 假设在第 1 行 collector_id = 7 和 borrower_id = 2,那么我应该无法使用相同的值更新该行。
  • 这能回答你的问题吗? Laravel unique validation on multiple columns
  • 您应该使用 form request validation 而不是在控制器内部执行此操作,否则您还必须为您的 create 方法重复此代码。

标签: laravel


【解决方案1】:

您可以添加这样的规则。

$collectorId = $request->collector_id;
$borrowerId = $request->borrower_id;

$this->validate($request, [
    'collector_id' => 'required',
    'borrower_id' => [
        'required',
        Rule::unique('collector_members')->where(function ($query) use ($collectorId, $borrowerId) {
            return $query->where('collector_id', $collectorId)
                         ->where('borrower_id', $borrowerId);
        }),
    ],
]);

【讨论】:

  • 嗨@vladan 我遇到错误,“找不到类'App\Http\Controllers\Dashboard\Rule'”我刚刚测试过。
  • 确保包含这样的规则类use Illuminate\Validation\Rule;
猜你喜欢
  • 1970-01-01
  • 2016-07-12
  • 2014-10-18
  • 2017-11-21
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
相关资源
最近更新 更多