ModelMetaableKeyNotAllowedFieldException
The ModelMetaableKeyNotAllowedFieldException exception is thrown when attempting to access or modify metadata with a key that is not in the model's allowed metadata list.
Namespace
JobMetric\Metadata\Exceptions\ModelMetaableKeyNotAllowedFieldException
Overview
This exception is thrown when:
- Getting metadata with a key not in the allowed list
- Storing metadata with a key not in the allowed list
- Deleting metadata with a key not in the allowed list
- Removing a key that is not in the allowed list
Exception Details
Constructor
public function __construct(string $model, string $key, int $code = 400, ?Throwable $previous = null)
Parameters:
string $model- The model class namestring $key- The key that was not allowedint $code- Exception code (default:400)Throwable|null $previous- Previous exception for chaining
When It's Thrown
Getting Metadata
class Product extends Model
{
use HasMeta;
protected array $metadata = ['color', 'size'];
}
$product = Product::find(1);
// This will throw ModelMetaableKeyNotAllowedFieldException
$weight = $product->getMetadata('weight');
Storing Metadata
// This will throw ModelMetaableKeyNotAllowedFieldException
$product->storeMetadata('weight', 500);
Deleting Metadata
// This will throw ModelMetaableKeyNotAllowedFieldException
$product->forgetMetadata('weight');
Handling the Exception
Check Before Accessing
$allowedKeys = $product->getMetaKeys();
if (in_array('weight', $allowedKeys) || in_array('*', $allowedKeys)) {
$weight = $product->getMetadata('weight');
} else {
// Handle: Key not allowed
}
Try-Catch Block
try {
$product->storeMetadata('weight', 500);
} catch (ModelMetaableKeyNotAllowedFieldException $e) {
// Handle: Key not allowed
\Log::warning("Attempted to use disallowed metadata key: weight");
}