diff --git a/src/Traits/CompositeKeys.php b/src/Traits/CompositeKeys.php new file mode 100644 index 0000000..a26ee83 --- /dev/null +++ b/src/Traits/CompositeKeys.php @@ -0,0 +1,57 @@ +]; + * + * @package Leenooks\Traits + */ +trait CompositeKeys { + /** + * Set the keys for a save update query. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + protected function setKeysForSaveQuery(Builder $query) + { + $keys = $this->getKeyName(); + + if (! is_array($keys)) { + return parent::setKeysForSaveQuery($query); + } + + foreach($keys as $keyName) { + $query->where($keyName, '=', $this->getKeyForSaveQuery($keyName)); + } + + return $query; + } + + /** + * Get the primary key value for a save query. + * + * @param mixed $keyName + * @return mixed + */ + protected function getKeyForSaveQuery($keyName = null) + { + if (is_null($keyName)) { + $keyName = $this->getKeyName(); + } + + if (isset($this->original[$keyName])) { + return $this->original[$keyName]; + } + + return $this->getAttribute($keyName); + } +} \ No newline at end of file