/** * Replace a model pattern by a key in an URL. * * @param string $uri * @param AbstractModel $model * * @return string */ protected function replacePatternWithModel($uri, AbstractModel $model) { // Compute pattern from model $pattern = $model->getClassBasename(); $pattern = strtolower($pattern); $pattern = $pattern . '|' . Str::plural($pattern) . '|' . $pattern . '_slug'; return preg_replace('/\\{(' . $pattern . ')\\}/', $model->getIdentifier(), $uri); }
/** * Scope to only the illustrables of an instance. * * @param Builder $query * @param AbstractModel $model * * @return Builder */ public function scopeIllustrable($query, AbstractModel $model) { return $query->where(['illustrable_type' => $model->getClass(), 'illustrable_id' => $model->id]); }
/** * @param AbstractModel|Builder $query * * @return Model */ protected function unwrapQueries($query) { if ($query instanceof Builder) { return $query->getModel(); } return $query; }