首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel雄辩的updateOrCreate不能正常工作

Laravel雄辩的updateOrCreate不能正常工作
EN

Stack Overflow用户
提问于 2022-01-13 08:23:44
回答 2查看 62关注 0票数 0

上次我可能也写过同样的问题然后我回来了..。

Laravel雄辩的firstOrCreate不能正常工作

关于最后一个问题,我发现fillable属性过滤器更新字段清单。因此,如果您想要更新基于fieldAfieldB的表,那么您的代码可能是..

代码语言:javascript
运行
复制
$modelOrRelation->updateOrCreate(
    ['fieldA' => 'a', 'fieldB' => 'b'], ['otherfields' => 'update value']
);

您必须在fillable属性上指定这些字段。$fillable = ['fieldA', 'fieldB', ...]

这就是我对firstOrCreateupdateOrCreate的了解。

此时,下面的代码生成许多相同的行。看起来,第一个参数['candle_date_time_kst']什么也不做。

代码语言:javascript
运行
复制
// candleRelation is hasMany relation..
$candleRelation = $market->candles($period);

$created = $created->add($candleRelation->updateOrCreate(
    [
        'candle_date_time_kst' => $time,
    ],
    $item
));

这将创建许多相同的candle_date_time_kst值行。此时,fillable属性已经填充了目标字段。

我还错过了什么?

updateOrCreate不应该信任吗?我不这么认为..。有件事我很怀念..。有洞察力吗?

#220114更新

所以我做作业..。

使用DB::getQueryLog(),我得到了这个查询。

看起来,updateOrCreate()记得最后一个更新值。然后,如果我为另一个updateOrCreate()重用相同的关系对象,则方法再次使用最后一个update参数。它是and子句,所以返回记录为none。

因此,我使用newQuery()方法初始化查询绑定。

代码语言:javascript
运行
复制
$created->add($candleRelation->newQuery()->updateOrCreate(
    [
        'candle_date_time_kst' => $time
    ],
    $item
));

#220114

不幸的是,重测显示newQuery()实际上没有帮助..。

我尝试了$relation->newModelInstance()并获得了相同的绑定。

我想要做的是获得相同的父级绑定,而不需要任何其他内容。。。有人知道吗?

在绑定的基础上,当得到关系模型时,也可以得到干净的绑定。所以我就在下面..。

代码语言:javascript
运行
复制
$created->add($market->candles($period)->updateOrCreate(
    [
        'candle_date_time_kst' => $item['candle_date_time_kst']
    ],
    $item
));

唯一的改变是$candleRelation$market->candles($period)

每次尝试时,新的关系实例都会产生这样的绑定问题。

……气疯了我了。

EN

回答 2

Stack Overflow用户

发布于 2022-01-13 09:43:41

您需要在格式列=>值中提供一个数组,非价值

票数 0
EN

Stack Overflow用户

发布于 2022-01-13 11:15:45

不久前我也有过类似的问题。UpdateOrInsert方法解决了这一问题。不幸的是,这种方法是查询生成器,而不是雄辩。但要达到这一结果,这是我唯一真正有效的解决办法。

只有当我尝试在where子句上使用超过1列时,才会出现问题,就像在您的示例中一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70693412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档