2017-06-13 32 views
0

我正在爲新聞報廢一個網站並將其保存在數據庫中,但是這個「工作」或功能將每小時運行一次,因此爲了減少記錄數量,我將其保存至20條記錄,現在我當然不會想要保留舊的消息,因此我想插入新的查詢並刪除以前的一個或更新現有的。記錄的數量總是20,但這將如何完成?當然,如果我插入+刪除,id號會每次都改變。但是,如果我做了更新,我將如何告訴它更新第1-20個ID。Laravel mysql插入+刪除或更新如何?

這是它看起來像一個數據庫:

enter image description here

下面是到目前爲止的代碼:

function oldham_chronicle(){ 
    $client = new Client(); 
    $crawler = $client->request('GET', 'http://www.oldham-chronicle.co.uk/news-features'); 
    $crawler->filter('div[id=content]>.teaser-50')->each(function ($node) { 
     $test = $node->filter('.plain')->text(); 
     $test2 = $node->filter('.dateonline')->text(); 
     $news = new News(); 
     $news->title = $test; 
     $news->datepublished = $test2; 
     $news->save(); 
    }); 
return view('chronicle'); 
+0

您是否嘗試過遷移語法? – MuTiny

回答

1

我建議你升級,你可以用這個

function oldham_chronicle(){ 
    $client = new Client(); 
    $crawler = $client->request('GET', 'http://www.oldham-chronicle.co.uk/news-features'); 
    $crawler->filter('div[id=content]>.teaser-50')->each(function ($node, $key) { 
     $test = $node->filter('.plain')->text(); 
     $test2 = $node->filter('.dateonline')->text(); 
     $id = $key + 1; 
     $news = News::where('id', $id)->first(); 

     // if news is null 
     if (!$news) { 
      $news = new News(); 
     } 

     $news->title = $test; 
     $news->datepublished = $test2; 
     $news->save(); 
    }); 
return view('chronicle'); 
嘗試

我沒有測試我的代碼,因爲我沒有數據。

+0

工程精彩!如果沒有id = 1,那麼基本上如果沒有記錄插入,如果有,更新呢? – Przemek

+0

我更新如果沒有記錄與ID @Przemek – brobrobrobrobro

+0

你是明星! <3謝謝! – Przemek