Вход Регистрация
Файл: app/Traits/FileableTrait.php
Строк: 42
<?php

declare(strict_types=1);

namespace 
AppTraits;

use 
AppModelsFile;
use 
IlluminateDatabaseEloquentCollection;
use 
IlluminateDatabaseEloquentRelationsMorphMany;

trait 
FileableTrait
{
    
/**
     * Возвращает загруженные файлы
     *
     * @return MorphMany<File, $this>
     */
    
public function files(): MorphMany
    
{
        return 
$this->morphMany(File::class, 'relate')
            ->
orderBy('created_at');
    }

    
/**
     * Возвращает файлы
     *
     * @return Collection<int, File>
     */
    
public function getFiles(): Collection
    
{
        return 
$this->files->filter(static fn (File $f) => ! $f->isImage() && ! $f->isVideo());
    }

    
/**
     * Возвращает медиафайлы (картинки и видео)
     *
     * @return Collection<int, File>
     */
    
public function getMedia(): Collection
    
{
        return 
$this->files->filter(static fn (File $f) => $f->isImage() || $f->isVideo());
    }

    
/**
     * Возвращает медиафайлы, не вставленные в текст
     *
     * @return Collection<int, File>
     */
    
public function getDetachedMedia(): Collection
    
{
        return 
$this->getMedia()->reject(fn (File $f) => str_contains($this->text ?? ''$f->path));
    }
}
Онлайн: 0
Реклама