如何使用Laravel 5.5中的DB名称的3个或多个参数进行自定义验证



我可以在laravel 5.5 中制定和使用规则,但我需要使用$属性,$ value,$ id,$ flag,$ flag,另一个属性甚至偶数的其他参数进行验证DB本身,例如验证独特,但有些不同

我已经在互联网上搜索了

public function __construct($id)
{
    $this->id = $id;
}
public function passes($attribute, $value)
{
    $modal = ledger::where('id', $this->id)->first();
    $ledger = ledger::where('id','!=', $modal->id )->where(['fk_id'=>"$modal->fk_id", 'flag'=>'1', $attribute=>$value])->first();
    if($ledger == 'null')
    {
        return true;
    }
}

我想要DB_NAME,标志值和属性FK_ID可以用输入替换。

我已经答案

在我的控制器中,我使用此

 public function update(Request $request, $id)
 {
    $this->validate($request, [
       'mssl_kode' => [new msslRules($id, 'ledger', 'id', 'fk_id', 'flag')],
    ]);
    //others script
}

然后在我的规则中我使用此

public function __construct($id, $db, $id2, $fkid, $flag)
{
    $this->id = $id;
    $this->db = "\App\".$db;
    $this->id2 = $id2;
    $this->fkid = $fkid;
    $this->flag = $flag;
}
public function passes($attribute, $value)
{
    $id2 = $this->id2;
    $fkid = $this->fkid;
    $modal = $this->db::where($id2, $this->id)->first();
    $ledger = $this->db::where($id2,'!=', $modal->$id2 )->where([$fkid=>$modal->$fkid, $this->flag=>'1', $attribute=>$value])->first();
    if($ledger == null)
    {
        return true;
    }else 
    {
        return false;
    }
}

我希望它对其他人有帮助

最新更新