【问题标题】:PHP how to Compare Form inputs with database values | LaravelPHP 如何将表单输入与数据库值进行比较 |拉拉维尔
【发布时间】: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 被忽略并始终向我显示成功警报

【问题讨论】:

    标签: php database forms laravel


    【解决方案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); 只需将此行添加到其他条件
    猜你喜欢
    • 2013-08-27
    • 2017-03-12
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2023-04-07
    相关资源
    最近更新 更多