PHP 如何将表单输入与数据库值进行比较 |拉拉维尔
Posted
技术标签:
【中文标题】PHP 如何将表单输入与数据库值进行比较 |拉拉维尔【英文标题】:PHP how to Compare Form inputs with database values | Laravel 【发布时间】:2018-03-26 08:11:12 【问题描述】:我需要将数据库值与表单中的输入进行比较,这是我的代码的一部分
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');
我需要将 $request->all() 与 db 值进行比较!我试试这个! if 被忽略并始终向我显示成功警报
【问题讨论】:
【参考方案1】:我会这样做。由于存在主键、日期或外键,数据库记录永远不会等于传入请求。您应该提取要与请求进行比较的数据库值,如下所示
$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');
【讨论】:
我试试这个但不工作,我尝试dd($db_records);
来验证我得到了什么,它告诉我array:1 [▼ 55318152 => "Tunisia Rent a car" ]
Tunisia Rent a car (website_title) 55318152 is column (mobile 1) $db_records = $website_info->pluck('website_title', 'mobile1', 'mobile2', 'email', 'adresse')->toArray();
我刚刚做了一些修改`pluck(['name', 'url','any_other_field'])`
我遇到了这个错误ErrorException (E_WARNING) strtolower() expects parameter 1 to be string, array given
你在哪里打电话 strtolower
我认为你应该在 laravel 文档 here 尝试或尝试 dd($incoming_request)
和 $db_records
。告诉我你那里有什么
感谢您帮助我使用 parth 在下面的答案中提供的解决方案,效果很好【参考方案2】:
最简单的方法是在查询中查找记录。
$website_info = WebsiteInfos::where([
['id', '=' ,$id],
['name', '=', $request->name],
['email', '=', $reqest->email]
])->first();
if ($website_info != null)
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');
【讨论】:
这看起来适用于第一个条件,但是当我进行更改时,我收到此错误Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR) Call to a member function update() on null
你能检查$requestData的函数更新和值吗?我认为您需要根据查询传递参数。
$website_info = WebsiteInfos::findOrFail($id);
只需将此行添加到其他条件以上是关于PHP 如何将表单输入与数据库值进行比较 |拉拉维尔的主要内容,如果未能解决你的问题,请参考以下文章