laravel:如何在创建数据库之前检查我的数据是否已经存在?

问题描述 投票:0回答:1

您好,我是使用laravel的新手,我使用laravel 6。

我正在为护士申请,我需要创造一个病人。我的问题是,许多患者可以使用相同的地址,姓氏。

我尝试了一种不同的方式来检查患者是否已经存在,但是结果是我不能让两个患者使用相同的数据。但是我只想检查一下新患者的所有信息是否等于我的数据库之一

我尝试与

if($patientotal= Patient::where([
            ['nom',$data],
            ['prenom',$data],
            ['telephone',$data],
            ['adresse',$data],
            ['codePostale',$data],
            ['ville',$data],
            ['infoSupplementaire',$data]
        ])->doesntExist() ){

但是没用

这里是我的代码

public function store(Request $request)

{
        $data=Validator::make($request->all(), [
            'nom'=>'required',
            'prenom'=>'required',
            'telephone'=>'required',
            'adresse'=>'required',
            'codePostale'=>'required',
            'ville'=>'required',
            'infoSupplementaire'=>'required',
        ]);



        $patient =new Patient();
        $patient->nom =$request->nom;
        $patient->prenom =$request->prenom;
        $patient->telephone =$request->telephone;
        $patient->adresse =$request->adresse;
        $patient->codePostale=$request->codePostale;
        $patient->ville=$request->ville;
        $patient->infoSupplementaire=$request->info;    

   if($patient->save()){


       if($request->has('debut','fin')){


        $dataOrdo=Validator::make($request->all(),[

            'dateOrdonnance'=>'required',

        ]);
           $datedebut = Carbon::parse($request->debut);
           $datefin = Carbon::parse($request->fin);

           $ordonnance=new Ordonnance();

           $ordonnance->debut=$datedebut;
           $ordonnance->fin=$datefin;
           $ordonnance->patient_id=$patient->id;

           if($ordonnance->save()){
            session()->put('id_ordonnance',$ordonnance->id);
            return['patient'=>$patient,'ordonnance'=>$ordonnance];

           }

       }
   } ;



        return response()->json([$request->all()]);

}
exists laravel-6
1个回答
0
投票

在这一点上,我想可以通过额外的查询来检查的最常见的解决方案是用户的数据已存在。

首先:您通过患者模型以这种方式创建一个简单查询:

$patientExists = Patient::where('nom', '=' ,$request->nom)
                         ->where('prenom', '=', $request->prenom)
                         ->count();

上一个查询将返回示例1,如果用户存在(因为我们正在比较nom和上一个记录中已经存在的prenom),所以您可以以这种方式编写下一步;

if ($patientExists > 0) {
//user already exists, so return a message about it
} else {
//users doesn't exists, please regiter him/her
}
© www.soinside.com 2019 - 2024. All rights reserved.