使用Laravel 5.1检查数据库中是否存在记录

时间:2016-03-28 16:17:02

标签: php laravel-5.1

我正在从我的localstorage中将xml文件内容插入到数据库中。然而,发生的是xml文件可以更新,当它更新时我需要检查记录是否已存在于我的数据库中。如果它存在,我需要更新记录,如果它不存在,我需要插入一个新记录。我能够插入但我似乎没有找到使用更新方法执行此操作的Laravel方法。

在我的xml文件中,它们是一个在更新xml时不会更改值的节点。我想我必须使用if语句来检查这个节点的值,但我似乎无法理解这一点。

以下是我插入的方式。

public function store(Request $request)
  {
    // Building directory path.
    $directory = storage_path('app/xmlentries/uploads');

    $files = File::allFiles($directory);

    foreach($files as $file) {

    $contents = $file->getContents();

    foreach((array) $contents as $content)
    {
        $simpleXml = simplexml_load_string($xml);

        $data = [
        'requisition' => $simpleXml->ExportData->Requisition['clientReqId'], //NODE THAT DOES NOT CHANGE VALUE
        'experience' => $simpleXml->ExportData->Requisition->EssentialFunction,
        'job_requirements' => $simpleXml->ExportData->Requisition->EssentialFunction,
        ],
        ];

        Vacancy::insert($data); //WHERE I AM INSERTING MY RECORD

    }

    }
    }   

如果记录已经存在,我将如何更新记录?

1 个答案:

答案 0 :(得分:0)

https://laravel.com/docs/5.2/eloquent#basic-inserts

如果您使用Eloquent,则不需要" if"在你的控制器中 "保存"如果你的PK在模型中正确配置了

,方法会为你看到它

"空缺"你的模特对吗?将每个属性放在一个对象中

$vacancy = new Vencancy();
$vacancy->requisition = $simpleXml->ExportData->Requisition['clientReqId'];
$vacancy->save();

尝试所有属性.... 查看您的主键[link] https://laravel.com/docs/5.2/eloquent#defining-models[/link]