Php 雄辩的ORM插入或更新

Php 雄辩的ORM插入或更新,php,mysql,eloquent,Php,Mysql,Eloquent,我正在使用Laravel框架的数据库组件进行一个项目。该库包括一个名为“胶囊”的数据库抽象层(DBAL)和一个名为“雄辩”的对象关系映射(ORM)库 我想更新数据库中已经存在的扩展,但如果它们不存在,我还想插入一个新的“扩展”。最好的方法是什么 到目前为止,我的代码是: try { $updatedDomainsCount = Capsule::table('tbldomainpricing') ->where('extension', $tld)

我正在使用Laravel框架的数据库组件进行一个项目。该库包括一个名为“胶囊”的数据库抽象层(DBAL)和一个名为“雄辩”的对象关系映射(ORM)库

我想更新数据库中已经存在的扩展,但如果它们不存在,我还想插入一个新的“扩展”。最好的方法是什么

到目前为止,我的代码是:

try {
    $updatedDomainsCount = Capsule::table('tbldomainpricing')
        ->where('extension', $tld)
        ->update(
            [
                'extension' => $tld,
                'autoreg' => 'domenytv',
                'grace_period' => '15',

                 'idprotection' => $idp,
                  'grace_period_fee' => $rea_price,
            ]
        );

    echo "Updated {$updatedDomainsCount} TLD: $tld</br>";
} catch (\Exception $e) {
    echo "I couldn't update domains tld. {$e->getMessage()}";
}   
试试看{
$UpdatedDomainCount=Capsule::table('tbldomainpricing')
->其中('extension',$tld)
->更新(
[
“扩展”=>$tld,
'autoreg'=>'domenytv',
“宽限期”=>“15”,
“idprotection”=>idp美元,
“宽限期费用”=>$rea\u价格,
]
);
echo“更新的{$UpdatedDomainCount}TLD:$TLD
”; }捕获(\异常$e){ echo“我无法更新域tld.{$e->getMessage()}”; }
使用雄辩的ORM方法:
updateOrCreate
,用于创建新记录或更新现有记录


使用雄辩的ORM方法:
updateOrCreate
,用于创建新记录或更新现有记录


我不知道您正在使用的系统是什么,但重复更新时插入…应该做您想做的事情。警告您,如果您不理解SQL语句的基本语法,使用ORM/DBAL可能比文字SQL语句更复杂。嘿,Krystian,我更新了问题标题,与了解这些东西的人更相关。我加入是因为我知道MySQL,但不知道什么是雄辩。那些知道雄辩和不太擅长SQL的人可能会错过它。欢迎来到SO!我不知道您正在使用的系统是什么,但是重复更新时插入…应该做您想要做的事情。警告您,如果您不了解SQL语句的基本语法,使用ORM/DBAL可能比文字SQL语句更复杂。嘿,Krystian,我更新了问题标题,与了解这些东西的人更相关。我加入是因为我知道MySQL,但不知道什么是雄辩。那些知道雄辩和不太擅长SQL的人可能会错过它。欢迎来到SO!“调用未定义的方法illumb\Database\Query\Builder::updateOrCreate()已尝试此操作。看起来WHMC没有实现此方法。”当您创建扩展Eloquent模型的模式,然后调用所提到的方法时,它将起作用。“调用未定义的方法illumb\Database\Query\Builder::updateOrCreate()”已经尝试过这个了。看起来WHMC没有实现这个方法。”当你创建一个扩展了Elount模型的模型,然后调用上面提到的方法时,它就会工作。