猿问

如何显示帖子所属的类别以及所有类别

希望你们都做得很好。我在帖子和类别表之间有一个多对多的关系。通过使用数据透视表,我能够获得帖子所属的所有类别,但我无法获得数据库中存在的所有类别。


这是我的编辑帖子方法:


public function edit(Post $post)

{

    $post=Post::find($post->id);

    $categories=Category::all();

    return view('admin.pages.post.edit',compact('post','categories'));

}

这就是我在我看来使用的:


<div class="form-group">

   <label>Categories</label>

    <select class="form-control" id="select2" name="categories_id[]" multiple="multiple">

     @foreach($post->categories as $category)

        <option value="{{ $category->id }}" selected>{{ $category->name}}</option>

     @endforeach

^^ 这显示了帖子所属的当前类别。


现在我有一个属于 WEB 类别的帖子。它在编辑页面中将 WEB 显示为一个类别但我也想显示帖子最初不属于的所有类别(AI、ML 等),以便用户可以选择更新帖子的类别属于。


我也使用 select2 作为多选框


这就是我所拥有的 

这就是我所追求的

http://img4.mukewang.com/61a9d51d00014bd410780183.jpg

素胚勾勒不出你
浏览 174回答 2
2回答

撒科打诨

在 HTML 表单上,您可以检查是否id是这样的一部分$post(我会做最容易理解的,您可以通过多种方式进行重构):&nbsp;<option value="{{ $category->id }}" {{isset($post->categories->where('id', $category->id)->first())?'selected':''}}>{{ $category->name}}</option>为了使这件事变得简单并以最少的调用数据库,在刀片视图上的循环之前将类别关系加载到您的帖子中。您不需要 ( $post=Post::find($post->id);) 行,因为您的路由模型绑定已经注入了它。在您的Controller的edit方法中:&nbsp;public function edit(Post $post)&nbsp;{&nbsp; &nbsp; &nbsp;$post->load('categories');&nbsp; &nbsp; &nbsp;$categories=Category::all();&nbsp; &nbsp; &nbsp;return view('admin.pages.post.edit',compact('post','categories'));&nbsp;}我假设你有关系,从categories到posts您的正确设置后的模型。但这本质上只是询问“此表单上的此帖子是否具有此类别(按此循环),然后将其标记为已选中”。我真的很喜欢 LaravelCollective 的方式来做到这一点,也推荐你看看图书馆。它将模型绑定到表单,并自动为您选择所选项目。您可以使用 Collective 在这样的简单行中完成:&nbsp;{!! Form::select('categories[]', $categories, null, ['class'=>'form-control', 'multiple', 'id'=>'categories']) !!}

米脂

修复了数小时搜索后的问题在我所做的编辑方法中:public function edit(Post $post){&nbsp; &nbsp; $post=Post::with('tags','categories')->find($post->id);&nbsp; &nbsp; $tags=Tag::all();&nbsp; &nbsp; $categories=Category::all();&nbsp; &nbsp; return view('admin.pages.post.edit',compact('post','categories','tags'));}在我看来:<div class="form-group">&nbsp; &nbsp; &nbsp; &nbsp;<label>Categories</label>&nbsp; &nbsp; &nbsp; &nbsp;<select class="form-control" id="categories" name="categories[]" multiple="multiple">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@foreach($categories as $category)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<option value="{{ $category->id }}"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @foreach($post->categories as $postCat)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {{ $postCat->id==$category->id?'Selected':'' }}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @endforeach&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;>{{ $category->name}}</option>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@endforeach&nbsp; &nbsp; &nbsp; &nbsp; </select>
随时随地看视频慕课网APP
我要回答