Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Illuminate\Database\Eloquent\Relations;class MorphPivot extends Pivot{/*** The type of the polymorphic relation.** Explicitly define this so it's not included in saved attributes.** @var string*/protected $morphType;/*** The value of the polymorphic relation.** Explicitly define this so it's not included in saved attributes.** @var string*/protected $morphClass;/*** Set the keys for a save update query.** @param \Illuminate\Database\Eloquent\Builder $query* @return \Illuminate\Database\Eloquent\Builder*/protected function setKeysForSaveQuery($query){$query->where($this->morphType, $this->morphClass);return parent::setKeysForSaveQuery($query);}/*** Set the keys for a select query.** @param \Illuminate\Database\Eloquent\Builder $query* @return \Illuminate\Database\Eloquent\Builder*/protected function setKeysForSelectQuery($query){$query->where($this->morphType, $this->morphClass);return parent::setKeysForSelectQuery($query);}/*** Delete the pivot model record from the database.** @return int*/public function delete(){if (isset($this->attributes[$this->getKeyName()])) {return (int) parent::delete();}if ($this->fireModelEvent('deleting') === false) {return 0;}$query = $this->getDeleteQuery();$query->where($this->morphType, $this->morphClass);return tap($query->delete(), function () {$this->fireModelEvent('deleted', false);});}/*** Get the morph type for the pivot.** @return string*/public function getMorphType(){return $this->morphType;}/*** Set the morph type for the pivot.** @param string $morphType* @return $this*/public function setMorphType($morphType){$this->morphType = $morphType;return $this;}/*** Set the morph class for the pivot.** @param string $morphClass* @return \Illuminate\Database\Eloquent\Relations\MorphPivot*/public function setMorphClass($morphClass){$this->morphClass = $morphClass;return $this;}/*** Get the queueable identity for the entity.** @return mixed*/public function getQueueableId(){if (isset($this->attributes[$this->getKeyName()])) {return $this->getKey();}return sprintf('%s:%s:%s:%s:%s:%s',$this->foreignKey, $this->getAttribute($this->foreignKey),$this->relatedKey, $this->getAttribute($this->relatedKey),$this->morphType, $this->morphClass);}/*** Get a new query to restore one or more models by their queueable IDs.** @param array|int $ids* @return \Illuminate\Database\Eloquent\Builder*/public function newQueryForRestoration($ids){if (is_array($ids)) {return $this->newQueryForCollectionRestoration($ids);}if (! str_contains($ids, ':')) {return parent::newQueryForRestoration($ids);}$segments = explode(':', $ids);return $this->newQueryWithoutScopes()->where($segments[0], $segments[1])->where($segments[2], $segments[3])->where($segments[4], $segments[5]);}/*** Get a new query to restore multiple models by their queueable IDs.** @param array $ids* @return \Illuminate\Database\Eloquent\Builder*/protected function newQueryForCollectionRestoration(array $ids){$ids = array_values($ids);if (! str_contains($ids[0], ':')) {return parent::newQueryForRestoration($ids);}$query = $this->newQueryWithoutScopes();foreach ($ids as $id) {$segments = explode(':', $id);$query->orWhere(function ($query) use ($segments) {return $query->where($segments[0], $segments[1])->where($segments[2], $segments[3])->where($segments[4], $segments[5]);});}return $query;}}