gpt4 book ai didi

php - Laravel Eloquent updateOrCreate 复合键

转载 作者:行者123 更新时间:2023-11-29 19:46:33 26 4
gpt4 key购买 nike

我正在尝试保存对一个数据库表中记录的更改,该数据库表具有 2 个元素的复合键。当我尝试使用 Model::updateOrCreate 或 Model::firstOrCreate 方法时,我从数据库收到错误,它告诉我 id 不存在。看起来 laravel 在创建查询时忽略了我提到的主键。

我的模型:

class CatalogueCatLanguage extends Model
{
public $incrementing = false;
protected $table = "CatalogueCatLanguages";
protected $fillable = ["cataloguecategory_id","language_id","name","description"];
protected $primaryKey = ["cataloguecategory_id","language_id"];
}

我在 Controller 方法中的代码:

CatalogoCatLingua::updateOrCreate(
[
"cataloguecategory_id"=>$trad["category"],
"language_id"=>$trad["language"]
],[
"name"=>$trad["langName"],
"description"=>$trad["langDescription"]
]
);

当我拥有“primaryKey”属性时出现的错误:

isset 或空中的偏移类型非法

当我评论“primaryKey”属性时出现的错误:

SQLSTATE[42S22]:找不到列:1054“where 子句”中的未知列“id”

我已经尝试了几种组合和方法来执行此操作,但是我不知道导致此错误的原因。

提前谢谢您。

最佳答案

Laravel 不支持复合主键(不过你可以尝试 this 解决方案)。您只能在此处使用字符串:

protected $primaryKey = "cataloguecategory_id";

关于php - Laravel Eloquent updateOrCreate 复合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40938884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com