【发布时间】:2021-01-21 16:10:15
【问题描述】:
我有复合主键,所以 Laravel 的 save() 方法不起作用。因此我需要覆盖保存方法。例如,我的主键是由 column_a 和 column_b 组成的复合键。你能举个例子如何覆盖保存方法以及我把它放在哪里?
我的主键:column_a,column_b
我尝试了以下方法:
protected function setKeysForSaveQuery(Builder $query)
{
parent::setKeysForSaveQuery($query);
$query->where('locale', '=', $this->locale);
return $query;
}
我找到了上面的代码,但即使我调用一个只从数据库读取值的方法,它也会导致 500 Internal Server Error。我已将 $primaryKey = 'column_a' 和 'locale'(在 where 内)设置为 column_b。我不知道 $this->locale 指的是什么?
这是我找到的另一种方法,但它也失败了
protected $secondaryKey = 'column_b';
function newQuery()
{
$query = parent::newQuery();
$query->where($this->secondaryKey, '=', $this->type);
return $query;
}
再说一次,我不知道 $this->type 指的是什么。
【问题讨论】: