如何检查laravel中是否存在数据

时间:2019-04-30 15:49:28

标签: laravel duplicates

我有一个表格,用户可以输入城市并提交 我已做出简单的逻辑以避免重复同一座城市 我输入的名称= city and city migration,其中具有列名称和created_by_id,并且我还使用了与房间具有一对多关系的city。我的城市模型名称是TotalCity。输入名称为城市 在我的控制器中,我已经执行了此逻辑

class QuickController extends Controller 
{
    public function logic(Request $request)
    {
       if(TotalCity::where('name',$request->city)->exists())
       {
         $city = TotalCity::where('name',$request->city)->value('id');
       }
       else {
          $city = TotalCity::create(['name'=>$request->city']);   

`}         }     }

此代码仍然无法正常工作,我也使用了firstOrCreate方法,但它也可以正常工作

我想做的是 如果存在加密数据,则我想取其值为“ id”,或者也可以获取所有值,如果不存在,则创建一个新值!!!

操作方法

3 个答案:

答案 0 :(得分:1)

您可以尝试或共享控制器的完整代码

else{
 $city = new TotalCity;
 $city->name = $request->city;
 $city->save();
}

答案 1 :(得分:1)

您可以添加验证以检查其是否唯一。

public function logic(Request $request)
{
   $this->validate($request, [
      city => 'required|unique:tableName.column',
   ]);

   $city = new TotalCity;
   $city->name = $request->city;
   $city->save();
}

希望这会有所帮助。

答案 2 :(得分:1)

firstOrCreate 功能是您所需要的

在您的情况下:

TotalCity::firstOrCreate([
  'name' => $request->city
]);