get()不起作用,但是First()起作用。我需要使用get()获取所有数据

时间:2019-05-02 07:18:22

标签: php mysql laravel laravel-5 eloquent

我有一个显示类别/主要帖子的页面,单击该页面将导航到包含有关主要帖子主题的子帖子的页面。问题是,但是,当我尝试使用-> get()时,它显示以下错误: Oops an Error occured

我用来获取信息的函数如下(URL显示为“ slug”):

public function knowledge_collection($slug, Request $request){
    $knowledge_post_primary = Knowledge::where('knowledge_slug', $slug)->get();
    //dd($knowledge_post_primary);
    $knowledge_posts = Knowledge_Post::where('parent_id', $knowledge_post_primary->id)->get();
    return view('knowledge.knowledge_posts', compact('knowledge_posts', 'knowledge_post_primary'));
}

最有可能是一个简单的修复程序,但是我似乎找不到它。我希望其他人能够并且能够帮助我:)

我尝试用FindorFail()以不同的方式请求数据,但到目前为止没有任何解决办法。

编辑:要求的屏幕截图。yeet

编辑编辑:使用@Gulshans代码后,出现以下错误:shii blade error

2 个答案:

答案 0 :(得分:1)

尝试此操作可得到单个结果:

$knowledge_post_primary = Knowledge::where('knowledge_slug','=',$slug)->first()->toArray();
if(!empty($knowledge_post_primary)){
   $knowledge_posts = Knowledge_Post::where('parent_id', '=',$knowledge_post_primary['id'])->get();
}

尝试以下方法可得到多个结果:

 $knowledge_post_primary = Knowledge::where('knowledge_slug','=',$slug)->get()->toArray();
 if(!empty($knowledge_post_primary)){
       foreach($knowledge_post_primary as $post_primary){
       $knowledge_posts = Knowledge_Post::where('parent_id', '=',$post_primary['id'])->get()->toArray();
          dd($knowledge_posts);
       }
  }

答案 1 :(得分:1)

如果您想获取Knowledge_slug的Knowledge_Post,并且只有一条知识记录,则应该使用

public function knowledge_collection($slug, Request $request){
    $knowledge_post_primary = Knowledge::where('knowledge_slug', $slug)->first();
    $knowledge_posts = Knowledge_Post::where('parent_id', $knowledge_post_primary->id)->get();
    return view('knowledge.knowledge_posts', compact('knowledge_posts', 'knowledge_post_primary'));
}

如果有很多记录,并且想要与所有相关的Knowledge_Posts在whereIn,要获取所有ID,则应使用pluck('id')->all()pluck('id')->toArray()

public function knowledge_collection($slug, Request $request){
        $knowledge_post_primary_Ids = Knowledge::where('knowledge_slug', $slug)->pluck('id')->all();
        $knowledge_posts = Knowledge_Post::whereIn('parent_id', $knowledge_post_primary_Ids)->get();
        return view('knowledge.knowledge_posts', compact('knowledge_posts', 'knowledge_post_primary'));
    }