Laravel Eloquent updateOrCreate复合键

时间:2016-12-02 18:35:20

标签: php mysql laravel eloquent

我正在尝试将更改保存到一个数据库表中的记录中,该表具有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'

我已经尝试了几种组合和方法,但是我没有得到导致此错误的原因。

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

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

protected $primaryKey = "cataloguecategory_id";
相关问题