我可以制定并使用规则在laravel 5.5+中进行验证,但我需要使用除$ attribute,$ value,$ id(即$ 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可通过输入替换。
答案 0 :(得分:1)
我已经有了答案
在我的控制器中,我使用此
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;
}
}
我希望对其他人有帮助