Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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中创建广告印象系统_Php_Mysql_Laravel_Query Builder - Fatal编程技术网

Php 如何在Laravel中创建广告印象系统

Php 如何在Laravel中创建广告印象系统,php,mysql,laravel,query-builder,Php,Mysql,Laravel,Query Builder,我正在创建一个广告印象系统。 我就是这样做的有更好的方法吗? array:19 [▼ 0 => "24127" 1 => "24126" 2 => "24125" 3 => "24124" 4 => "24123" 5 => "24122" 6 => &

我正在创建一个广告印象系统。 我就是这样做的有更好的方法吗?

array:19 [▼
      0 => "24127"
      1 => "24126"
      2 => "24125"
      3 => "24124"
      4 => "24123"
      5 => "24122"
      6 => "24121"
      7 => "24120"
      8 => "24119"
      9 => "24118"
      10 => "122283"
      11 => "122282"
      12 => "18144"
      13 => "22950"
      14 => "134154"
      15 => "23064"
      16 => "14397"
      17 => "218105"
      18 => "21489"
    ]

foreach($data as $impress => $impressid){       
    $impRecord = DB::table("adsimpressions")->where([
                ['ad_id','=',$impressid->page_id.$impressid->id],
                ['date','=',date("d-m-Y")]
            ])->first();
        if(isset($impRecord->id) and is_object($impRecord)){
            DB::table("adsimpressions")->where("id",$impRecord->id)->increment('impressions');
        }else{
            DB::table("adsimpressions")->insert([
                'ad_id' =>$impressid->page_id.$impressid->id,
                'impressions' =>1,
                'date' => date("d-m-Y")
            ]);
        }
    }

我认为这种方法会使我的页面变慢。。你的建议对我来说很重要

我建议你阅读拉威尔收藏

https://laravel.com/docs/8.x/collections#available-methods
1:获取
adsimpressions
表的所有记录并存储到in-Laravel Collection Facade中

2:取而代之的是这个查询

DB::table("adsimpressions")->where([
            ['ad_id','=',$impressid->page_id.$impressid->id],
            ['date','=',date("d-m-Y")]
        ])->first();
您可以使用laravel collection where方法将记录提取到您的集合中

https://laravel.com/docs/8.x/collections#method-where
您的数据库连接被最小化,此方法使您的页面速度变高