laravel在每个循环中更改URL和id

时间:2017-06-14 10:38:15

标签: laravel laravel-5

我有这样的事情:

function odeon(){
    $data= file_get_contents('https://api.cinelist.co.uk/get/times/cinema/10565');
    $data = json_decode($data);
    $id = 1;
    foreach($data->listings as $listing){
        $title = $listing->title;
        $time = implode(', ', $listing->times);
        $business_id = 1;
        $film = Film::where('id', $id)->first();
        $id = $id + 1;
        // if news is null
        if (!$film) {
            $film = new Film();
        }
        $film->title = $title;
        $film->times = $time;
        $film->business_id = $business_id;
        $film->save();
    }

    return view('odeon')->with(['listings' => $data->listings]);
}

我想要做的是添加更多电影院,而不是:

  

$数据=   的file_get_contents( 'https://api.cinelist.co.uk/get/times/cinema/10565');

     

$ data = file_get_contents('https://api.cinelist.co.uk/get/times/cinema/6756');

类似于:

  

$ data = file_get_contents('https://api.cinelist.co.uk/get/times/cinema/6756-10565');

所以从数字6756到10565,问题是这个以及每个电影都有不同的business_id我不想复制每个电影的功能所以任何帮助将不胜感激;)

另一个问题是,如果另一天的电影会比前一天减少,我当然不想在今天的电影中播放

//修改

好的,我会尽力解释我想要达到的目标。

我想循环播放电影,为今天检索电影,保存到数据库,检索明天保存到数据库中的数据等等。我想这样做7天,现在每个电影院,电影院ID +日期变化:

https://api.cinelist.co.uk/get/times/cinema/10565?day=2017-06-14

今天会给我带回电影,但是我想要实现7天这样的事情:

$cinema_id=['10', '20'] (number = cinema_id)
    $startdate = strtotime("today");
    $enddate = strtotime("+7 Days");
    while ($startdate < $enddate) {
        echo date("Y-m-d", $startdate) . "<br>";
        $startdate = strtotime("+1 Days", $startdate);
    }

 $data= file_get_contents (https://api.cinelist.co.uk/get/times/cinema/$cinema_id?day=$startdate)

所以基本上我想循环播放一系列电影和每个cinema_id,提前7天将详细信息保存到数据库中。当然我不想保留旧记录,因此每天都要删除或更新

1 个答案:

答案 0 :(得分:1)

你的问题很模糊,但可能你的意思是......

function odeon(){
  $arrayOfCinemaIds = [10565,6756];
  foreach($arrayOfCinemaIds as $id){
    //append your id
    $data= file_get_contents('https://api.cinelist.co.uk/get/times/cinema/'.$id);
    $data = json_decode($data);
    $id = 1;
    foreach($data->listings as $listing){
      $title = $listing->title;
      $time = implode(', ', $listing->times);
      $business_id = 1;
      $film = Film::where('id', $id)->first();
      $id = $id + 1;
      // if news is null
      if (!$film) {
        $film = new Film();
      }
      $film->title = $title;
      $film->times = $time;
      $film->business_id = $business_id;
      $film->save();
    }
    $listings[]=$data->listings;
  }
  //$listings will have all the listings from all the loops
  return view('odeon')->with(['listings' => $listings]);
}  

您只需根据需要向$arrayOfCimenaIds添加更多条目。通常,您可以从Db或其他数据存储中加载它们。

编辑: 如果你有一系列数字,你不需要你可以做的数组

for($id=6756;$id<=10565;$id++){..}

而不是foreach()