我要检查是否存在某些内容,如果该条件为真,我想更新之前获取的记录。
$resultQuery = DB::table('cards')->where('api_id', $card->id)->first();
if (this condition will pass I want to update this record) {
$resultQuery->update(array('price_usd' => $card->prices->usd));
}
当我像这样使用-> update()时,出现错误:
调用未定义的方法stdClass :: update();
我该怎么做?
答案 0 :(得分:2)
laravel查询构建器上的first()
函数返回stdClass
,表示标准类。
在PHP中,update()
中没有名为stdClass
的函数。您在stdClass上调用了update()
,这会导致错误。
有几种方法可以实现您的目标。
update()
函数。$resultQuery = DB::table('cards')->where('api_id', $card->id)->first();
if (your_condition) {
Db::table('cards')
->where('api_id', $card->id)
->update([
'price_usd' => $card->prices->usd
]);
}
first()
$resultQuery = DB::table('cards')->where('api_id', $card->id);
if (your_condition) {
$resultQuery
->update([
'price_usd' => $card->prices->usd
]);
}
为卡片创建雄辩的模型(如果尚未完成的话)。
public class Card extends Model
{
}
使用雄辩的查询生成器来获取数据。并使用模型update()
函数更新数据。
$resultingCard = Card::where('api_id', $card->id)->first();
if (your_condition) {
$resultingCard->update([
'price_usd' => $card->prices->usd,
]);
}
答案 1 :(得分:0)
类似这样的东西:
$resultQuery = DB::table('cards')->where('api_id', $card->id);
if ($resultQuery->count()) {
$object = $resultQuery->first();
$object->price_usd = $card->prices->usd;
$object->save();
}
或在此处寻找替代解决方案:Eloquent ->first() if ->exists()
答案 2 :(得分:0)
如果您使用的是模型
您可以添加卡控制器
$card = Card::where('api_id', $card->id)->first();
if (someConditional)
{
// Use card properties, number is a example.
$card->number = 10
// This line update this card.
$card->save();
}
您可以了解有关eloquent here的更多信息。