在索引视图 blade 中隐藏克隆 post

hide clone post in index view blade

我的 livewire show blade 中有一个克隆功能,所以当用户克隆 post 时,我不希望克隆 post 在一般 post 查看 blade

Post::get();

查看blade

@foreach($posts as $post)
    {{ $post->title }}
@endforeach
``
 (

我不想在索引中有相同的 post

我只想在配置文件中显示用户克隆 post

我该怎么做 带电组件

public function clone($id)
{
    $post = Post::find($id);
    $newPost = $post->replicate();
    $newPost->created_at = Carbon::now();
    $newPost->save();
}

您需要一种方法来识别 post 是否被克隆。为此,您可以将字段 cloned_post_id 添加到 posts table,然后在克隆它时,设置原始 post 的 ID。

一旦你有了这些数据,你就可以在你的寄存器中过滤掉克隆的 posts - 实现这个的最好方法是在 Post 模型上添加一个关系,并检查它不存在 - 但您也可以检查 whereNull('cloned_post_id').

克隆 post,

public function clone($id)
{
    $post = Post::find($id);
    $newPost = $post->replicate();
    $newPost->cloned_post_id = $post->id;
    $newPost->updated_at = Carbon::now();
    $newPost->created_at = Carbon::now();
    $newPost->save();
}

然后在您的 Post 模型中,添加该关系,

public function clonedPost() 
{
    $this->belongsTo(Post::class, 'cloned_post_id');
}

然后在您的注册表中,检查 whereDoesntHave(),以排除被克隆的 post,

$posts = Post::whereDoesntHave('clonedPost')->get();