%PDF- %PDF-
Direktori : /home/silvzytp/dsr_code/vendor/laravel/framework/src/Illuminate/Queue/ |
Current File : //home/silvzytp/dsr_code/vendor/laravel/framework/src/Illuminate/Queue/SerializesAndRestoresModelIdentifiers.php |
<?php namespace Illuminate\Queue; use Illuminate\Contracts\Database\ModelIdentifier; use Illuminate\Contracts\Queue\QueueableCollection; use Illuminate\Contracts\Queue\QueueableEntity; use Illuminate\Database\Eloquent\Collection as EloquentCollection; use Illuminate\Database\Eloquent\Relations\Concerns\AsPivot; use Illuminate\Database\Eloquent\Relations\Pivot; trait SerializesAndRestoresModelIdentifiers { /** * Get the property value prepared for serialization. * * @param mixed $value * @return mixed */ protected function getSerializedPropertyValue($value) { if ($value instanceof QueueableCollection) { return (new ModelIdentifier( $value->getQueueableClass(), $value->getQueueableIds(), $value->getQueueableRelations(), $value->getQueueableConnection() ))->useCollectionClass( ($collectionClass = get_class($value)) !== EloquentCollection::class ? $collectionClass : null ); } if ($value instanceof QueueableEntity) { return new ModelIdentifier( get_class($value), $value->getQueueableId(), $value->getQueueableRelations(), $value->getQueueableConnection() ); } return $value; } /** * Get the restored property value after deserialization. * * @param mixed $value * @return mixed */ protected function getRestoredPropertyValue($value) { if (! $value instanceof ModelIdentifier) { return $value; } return is_array($value->id) ? $this->restoreCollection($value) : $this->restoreModel($value); } /** * Restore a queueable collection instance. * * @param \Illuminate\Contracts\Database\ModelIdentifier $value * @return \Illuminate\Database\Eloquent\Collection */ protected function restoreCollection($value) { if (! $value->class || count($value->id) === 0) { return ! is_null($value->collectionClass ?? null) ? new $value->collectionClass : new EloquentCollection; } $collection = $this->getQueryForModelRestoration( (new $value->class)->setConnection($value->connection), $value->id )->useWritePdo()->get(); if (is_a($value->class, Pivot::class, true) || in_array(AsPivot::class, class_uses($value->class))) { return $collection; } $collection = $collection->keyBy->getKey(); $collectionClass = get_class($collection); return new $collectionClass( collect($value->id)->map(function ($id) use ($collection) { return $collection[$id] ?? null; })->filter() ); } /** * Restore the model from the model identifier instance. * * @param \Illuminate\Contracts\Database\ModelIdentifier $value * @return \Illuminate\Database\Eloquent\Model */ public function restoreModel($value) { return $this->getQueryForModelRestoration( (new $value->class)->setConnection($value->connection), $value->id )->useWritePdo()->firstOrFail()->load($value->relations ?? []); } /** * Get the query for model restoration. * * @param \Illuminate\Database\Eloquent\Model $model * @param array|int $ids * @return \Illuminate\Database\Eloquent\Builder */ protected function getQueryForModelRestoration($model, $ids) { return $model->newQueryForRestoration($ids); } }