【问题标题】:Laravel mysql insert+delete or update how?Laravel mysql 插入+删除或更新如何?
【发布时间】:2017-06-13 08:27:32
【问题描述】:

我正在废弃一个网站以获取新闻并将其保存在数据库中,但是这个“工作”或功能将每小时运行一次,因此为了减少记录数量,我将其减少到 20 条记录,现在我当然不这样做了'不想保留旧消息,因此我想插入新查询并删除前一个查询或更新现有查询。记录数始终为 20,但如何做到这一点?当然,如果我插入+删除,id 号每次都会改变。但是,如果我进行更新,我将如何告诉它更新前 1-20 个 id。

这是它在数据库中的样子:

这是目前为止的代码:

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');

【问题讨论】:

  • 你试过迁移语法吗?

标签: mysql laravel laravel-5 eloquent laravel-5.4


【解决方案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');

我没有测试我的代码,因为我没有数据。

【讨论】:

  • 效果很好!如果没有 id = 1 那么基本上如果没有记录插入,如果有,则改为更新?
猜你喜欢
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多