Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.2使用动态内容从选择插入_Php_Mysql_Laravel - Fatal编程技术网

Php Laravel 5.2使用动态内容从选择插入

Php Laravel 5.2使用动态内容从选择插入,php,mysql,laravel,Php,Mysql,Laravel,作为拉威尔的新手,我希望我能弄清这个相当令人恼火的问题 我有一个小应用程序,包括两种用户类型,买家和提供商,用户类型->买家可以为他们所需的服务请求免费估价,提供商可以手动创建此估价,或者根据他们为特定价格范围设置的默认值自动发送估价,因此,例如,如果用户买家请求估价为200英镑的服务,提供商可能已经设置了该价格范围的默认估价为180英镑至220英镑,这将向用户显示 我的问题是为了公平起见,我们使用laravel中的随机函数从providers_表中随机选择5个提供者及其默认估计值,并从orde

作为拉威尔的新手,我希望我能弄清这个相当令人恼火的问题

我有一个小应用程序,包括两种用户类型,买家和提供商,用户类型->买家可以为他们所需的服务请求免费估价,提供商可以手动创建此估价,或者根据他们为特定价格范围设置的默认值自动发送估价,因此,例如,如果用户买家请求估价为200英镑的服务,提供商可能已经设置了该价格范围的默认估价为180英镑至220英镑,这将向用户显示

我的问题是为了公平起见,我们使用laravel中的随机函数从providers_表中随机选择5个提供者及其默认估计值,并从orderBy以降序向用户显示,并在视图中循环显示结果

$projectbids = ProjectBids::where('provider_id', '=', $proid)
    ->where('category_id', '=', $catid)
    ->orderBy('bid_price', 'desc')
    ->get()->random(5);

foreach($projectbids as $bid)
{{ $bid->bid_price }}
endforeach
因此,我试图找到一种方法,将显示的5个估计插入到保存的_估计表中,这样,如果用户刷新页面或返回页面,模型和视图将不会根据调用的random5函数对提供者结果重新排序

我知道这个问题:但我不确定是否有更好或更简单的方法,因为我的问题在于我正在循环表中提供给视图的5个结果

简而言之:我希望能够将5个动态结果直接存储到一个保存的估计表中,该表包含多个列,如项目id、提供商id、用户id、估计价格,以便用户将来可以返回到保存的估计,而不必更改

非常感谢您的任何意见和建议,看看经验丰富的用户会提出什么建议将非常有帮助

谢谢

-更新了个人方法,以查看是否有改进的空间,并使其更适合laravel

    $results = $bidders;
    foreach($results as $row){
        $project = $projectid;
        $category = $row->category_id;
        $provider = $row->service_providers_id;
        $bidprice = $row->bid_price;
        $propvalue = $row->property_value_id;

        DB::table('static_bids')->insert(array(
            'project_id' => $project,
            'category_id' => $category,
            'service_providers_id' => $provider,
            'bid_price' => $bidprice,
            'property_value_id' => $propvalue
        ));
      }

您只需在表中使用简单的插入,如下所示:

foreach$projectbids作为$bid{ $result=saveDestination::createarray 'project\u id'=>$bid->project\u id, “提供商id”=>$bid->提供商id, 'user\u id'=>$bid->user\u id, '预估价格'=>$bid->预估价格 ; }


无论如何,只使用一个查询是无法插入的。如果您希望这样做的唯一原因是以后向用户显示相同的HTML,那么您可以简单地存储输出HTML,但这是一种糟糕的做法。

有趣的是,您应该这么说!你几乎刚刚想出了我上个小时所做的工作!这是我在注意到你回答问题之前所做的。检查我的升级问题,它们不太一样!你的例子很好。但如果您问如何使它更为Laravel友好,我建议您删除变量分配块。它看起来像$a=$b,这是冗余代码。此外,出于多种原因,最好使用雄辩的SQL,而不是原始SQL。但是,你更新的例子应该可以很好地工作。我对你的答案做了更多的修改,只是稍微修改了相关变量,因为我可以看出$a=$b的意思,当变量可以放在查询中并引用对象时,它会无意义地赋值两次。此外,我还更改了::first或create的::create方法,以进一步防止重复。感谢您抽出时间与helo Alexey见面,我非常感谢: