为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
素胚勾勒不出你 2021-12-03 16:27:36
希望你们都做得很好。我在帖子和类别表之间有一个多对多的关系。通过使用数据透视表,我能够获得帖子所属的所有类别,但我无法获得数据库中存在的所有类别。这是我的编辑帖子方法: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 作为多选框这就是我所拥有的 这就是我所追求的
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

在 HTML 表单上,您可以检查是否id是这样的一部分$post(我会做最容易理解的,您可以通过多种方式进行重构):


 <option value="{{ $category->id }}" {{isset($post->categories->where('id', $category->id)->first())?'selected':''}}>{{ $category->name}}</option>

为了使这件事变得简单并以最少的调用数据库,在刀片视图上的循环之前将类别关系加载到您的帖子中。您不需要 ( $post=Post::find($post->id);) 行,因为您的路由模型绑定已经注入了它。


在您的Controller的edit方法中:


 public function edit(Post $post)

 {

     $post->load('categories');

     $categories=Category::all();

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

 }

我假设你有关系,从categories到posts您的正确设置后的模型。但这本质上只是询问“此表单上的此帖子是否具有此类别(按此循环),然后将其标记为已选中”。


我真的很喜欢 LaravelCollective 的方式来做到这一点,也推荐你看看图书馆。它将模型绑定到表单,并自动为您选择所选项目。您可以使用 Collective 在这样的简单行中完成:


 {!! Form::select('categories[]', $categories, null, ['class'=>'form-control', 'multiple', 'id'=>'categories']) !!}



查看完整回答
反对 回复 2021-12-03
?
米脂

TA贡献1836条经验 获得超3个赞

修复了数小时搜索后的问题


在我所做的编辑方法中:


public function edit(Post $post)

{

    $post=Post::with('tags','categories')->find($post->id);

    $tags=Tag::all();

    $categories=Category::all();

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

}

在我看来:


<div class="form-group">

       <label>Categories</label>

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

           @foreach($categories as $category)

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

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

                      {{ $postCat->id==$category->id?'Selected':'' }}

                @endforeach

           >{{ $category->name}}</option>

           @endforeach

        </select>


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信