shaark/app/Concerns/Models/Postable.php

38 lines
819 B
PHP

<?php
namespace App\Concerns\Models;
use App\Post;
use App\User;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\MorphOne;
use Illuminate\Http\Request;
/**
* @property string $title
* @property string $content
* @method Builder withPrivate(bool|User|Request $private)
*/
trait Postable
{
public function post(): MorphOne
{
return $this->morphOne(Post::class, 'postable');
}
public function scopeWithPrivate(Builder $query, $user = null): Builder
{
return $query->whereHas('post', function ($query) use ($user) {
return $query->withPrivate($user);
});
}
public function toSearchableArray()
{
return [
'title' => $this->title,
'content' => $this->content,
];
}
}