| 1234567891011121314151617181920212223242526272829303132333435 |
- <?php
- namespace Illuminate\Database\Eloquent\Relations\Concerns;
- use BackedEnum;
- use InvalidArgumentException;
- use UnitEnum;
- trait InteractsWithDictionary
- {
- /**
- * Get a dictionary key attribute - casting it to a string if necessary.
- *
- * @param mixed $attribute
- * @return mixed
- *
- * @throws \InvalidArgumentException
- */
- protected function getDictionaryKey($attribute)
- {
- if (is_object($attribute)) {
- if (method_exists($attribute, '__toString')) {
- return $attribute->__toString();
- }
- if ($attribute instanceof UnitEnum) {
- return $attribute instanceof BackedEnum ? $attribute->value : $attribute->name;
- }
- throw new InvalidArgumentException('Model attribute value is an object but does not have a __toString method.');
- }
- return $attribute;
- }
- }
|