You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel实现仅展示当前登录用户草稿文章的技术求助

问题修正:展示当前登录用户的草稿文章

控制器代码的核心问题

  1. 冗余参数:方法中的Post $post和User $user属于路由模型绑定,但本接口无需接收具体的文章或用户实例,完全可以移除。
  2. 错误的where条件写法:第二个where传入的是布尔表达式$post->user_id == auth()->user()->id,这会将true/false作为查询条件,而非正确的字段匹配逻辑。
  3. 枚举值匹配风险:使用__('draft')可能导致翻译后的文本与数据库中status枚举的原始值(draft)不匹配,直接使用字符串常量更可靠。

修正后的控制器代码

public function draft()
{
    // 方式1:直接查询Post模型
    $drafts = Post::where('status', 'draft')
        ->where('user_id', auth()->user()->id)
        ->paginate(8);

    // 方式2:通过用户关联查询(更符合Eloquent最佳实践)
    // $drafts = auth()->user()->posts()->where('status', 'draft')->paginate(8);

    return view('post.draft', compact('drafts'));
}

视图代码优化(可选)

原视图逻辑正常,仅建议调整空状态提示文本更贴合场景:

@forelse ($drafts as $draft)
    <div class="bg-white p-2">
        <h2 class="text-black">
            {{ $draft->title }}
        </h2>
    </div>
@empty
    <p>{{ __('There are no draft posts') }}</p>
@endforelse

模型代码说明

Post和User模型的关联定义已经正确,无需修改。

内容的提问来源于stack exchange,提问作者DonMartinWorks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:37:08