2016-12-02 112 views
0

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

我的模型:

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 or empty

呃ROR我是说我有 “的PrimaryKey” 属性评论:

SQLSTATE [42S22]:列未找到:在 'where子句'

我已经尝试过多种组合1054未知列 'ID'和这样做的方式,但我没有得到什么导致这个错误。

谢谢,提前。

回答

0

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

protected $primaryKey = "cataloguecategory_id";