Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Testing
/
Concerns
:
HasUuids.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Illuminate\Database\Eloquent\Concerns; use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Support\Str; trait HasUuids { /** * Initialize the trait. * * @return void */ public function initializeHasUuids() { $this->usesUniqueIds = true; } /** * Get the columns that should receive a unique identifier. * * @return array */ public function uniqueIds() { return [$this->getKeyName()]; } /** * Generate a new UUID for the model. * * @return string */ public function newUniqueId() { return (string) Str::orderedUuid(); } /** * Retrieve the model for a bound value. * * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Relations\Relation $query * @param mixed $value * @param string|null $field * @return \Illuminate\Contracts\Database\Eloquent\Builder * * @throws \Illuminate\Database\Eloquent\ModelNotFoundException */ public function resolveRouteBindingQuery($query, $value, $field = null) { if ($field && in_array($field, $this->uniqueIds()) && ! Str::isUuid($value)) { throw (new ModelNotFoundException)->setModel(get_class($this), $value); } if (! $field && in_array($this->getRouteKeyName(), $this->uniqueIds()) && ! Str::isUuid($value)) { throw (new ModelNotFoundException)->setModel(get_class($this), $value); } return parent::resolveRouteBindingQuery($query, $value, $field); } /** * Get the auto-incrementing key type. * * @return string */ public function getKeyType() { if (in_array($this->getKeyName(), $this->uniqueIds())) { return 'string'; } return $this->keyType; } /** * Get the value indicating whether the IDs are incrementing. * * @return bool */ public function getIncrementing() { if (in_array($this->getKeyName(), $this->uniqueIds())) { return false; } return $this->incrementing; } }