2017-10-14 292 views
0

我需要数据库值与输入比较来自晶这是一个我的代码的一部分PHP如何比较表单输入与数据库值| Laravel

public function update($id, Request $request) 
{ 
    $requestData = $request->all(); 
    $website_info = WebsiteInfos::findOrFail($id); 

     if ($website_info->all() == $request->all()) { 
      Session::flash('alert-info', 'No Change have been made'); 
      return redirect('admin/website_infos'); 

     } else { 

      $website_info->update($requestData); 

      Session::flash('alert-success', 'WebsiteInfos updated!'); 

      return redirect('admin/website_infos'); 

     } 



} 

我需要比较$请求 - >所有()的分贝值!我尝试这个!如果被忽略,并始终显示我的成功警报

回答

0

最简单的方法是在查询中查找记录。

$website_info = WebsiteInfos::where([ 
    ['id', '=' ,$id], 
    ['name', '=', $request->name], 
    ['email', '=', $reqest->email] 
])->first(); 

if (count($website_info) > 0) { 
    Session::flash('alert-info', 'No Change have been made'); 
    return redirect('admin/website_infos'); 
} else { 
    $website_info->update($requestData); 
    Session::flash('alert-info', 'No Change have been made'); 
    return redirect('admin/website_infos'); 
} 
+0

这看起来工作的第一个condtion,但当我作出改变,我收到这个错误'Symfony \组件\调试\例外\ FatalThrowableError(E_ERROR) 调用成员函数update()on null' –

+0

你可以检查函数更新和$ requestData的值吗?我认为你需要根据查询传递参数。 – parth

+0

'$ website_info = WebsiteInfos :: findOrFail($ id);'只需将此行添加到else条件 –

0

我会这样做。由于存在主键,日期或外键,数据库记录永远不会与传入请求相同。您应该按照以下方式采集要与请求进行比较的数据库值:

$db_records =$website_info->pluck(['name', 'url','any_other_field'])->toArray(); 
$incoming_request =$request->all(); //assumes this contains name, url, and any_other_field 

if ($db_records == $incoming_request) { 
      Session::flash('alert-info', 'No Change have been made'); 
      return redirect('admin/website_infos'); 

     } 
+0

我试试这个,不行, 我尝试'DD($ db_records);'验证啥子我得到的,它给我'阵列:1 [▼ 55318152 => “突尼斯汽车租赁” ]' 突尼斯汽车租赁(website_title) 55318152是柱(移动1) '$ db_records = $ website_info->摘去( 'website_title', 'mobile1', '移动电话2', '电子邮件', '住址' ) - > toArray();' –

+0

我只是做了一些改变'[pluck(['name','url','any_other_field'])' –

+0

我有这个错误 'ErrorException(E_WARNING) strtolower()期望参数1是字符串,数组给定' –