Вы можете попробовать решение, представленное в этой статье Решено: Eloquent не поддерживает составные первичные ключи.
Добавив метод setKeysForSaveQuery
, приведенный ниже, к вашей модели и удалив атрибут $primaryKey
, вы можете добавить эту не поддерживаемую функцию в вашу модель Eloquent.
<?php
use Illuminate\Database\Eloquent\Builder;
class Visit extends Model {
public $incrementing = false;
protected function setKeysForSaveQuery(Builder $query)
{
$query
->where('sk_time', '=', $this->getAttribute('sk_time'))
->where('sk_region', '=', $this->getAttribute('sk_region'));
->where('sk_device', '=', $this->getAttribute('sk_device'));
return $query;
}
}
РЕДАКТИРОВАТЬ: Как отметил @Devon, это может повлиять на Eloquent другими способами и должно быть тщательно проверено перед использованием. Однако это должно дать вам некоторое разрешение на его решение, если вы не находитесь в положении, когда вы можете (предпочтительно) реструктурировать приложение или данные.