我正在尝试将更改保存到一个数据库表中的记录中,该表具有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"];
}
我在控制器方法中的代码:
CatalogoCatLingua::updateOrCreate(
[
"cataloguecategory_id"=>$trad["category"],
"language_id"=>$trad["language"]
],[
"name"=>$trad["langName"],
"description"=>$trad["langDescription"]
]
);
当我拥有“primaryKey”属性时我得到的错误:
isset中的非法偏移类型或空
我对“primaryKey”属性发表评论时得到的错误:
SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'id'
我已经尝试了几种组合和方法,但是我没有得到导致此错误的原因。
提前谢谢你。
答案 0 :(得分:0)
Laravel不支持复合主键(你可以试试this解决方案)。您只能在此处使用字符串:
protected $primaryKey = "cataloguecategory_id";