【问题标题】:Select category with 2 levels (category and subcategory)选择具有 2 个级别的类别(类别和子类别)
【发布时间】:2016-12-15 17:47:22
【问题描述】:

我正在创建一个包含 2 个级别、一个类别和子类别的选择类别,我已经创建并将数据保存在数据库中,唯一缺少的是在视图页面中,使选择字段按我的预期显示,但我有对它的灵魂有一些疑问,有人可以提示吗?

代码示例:

categories:
- id;
- name;
- parent_id;

example data:
1,  Politics, null;
2, Sports, null;
3, World, null;
4, Soccer, 2;

Final result on Input Select:
Politics
Sports
-- Soccer
World


my view:
<select  name="category" id="category" class="form-control">
                                <option>Select...</option>
                                  @foreach($categories as $category)
                                    <option value="{{$category->id}}">{{$category->name}}</option>

                                  @endforeach
                              </select>

【问题讨论】:

    标签: php laravel laravel-5.2


    【解决方案1】:

    在categories 之间创建一个关系为:

    类别模型

    public function subcategories()
    {
        return $this->hasMany('App\Category', 'parent_id');
    }
    
    public function parent()
    {
        return $this->belongsTo('App\Category');
    }
    

    那么你可以查询为:

    $Categories = Category::whereNull('parent_id')->with('subcategories')->get();
    

    在您看来,您可以这样做:

    @foreach($categories as $category)
      <option value="{{$category->id}}">{{$category->name}}</option>
      @foreach($category->subcategories as $subcategory)
        <option value="{{$subcategory->id}}">{{$subcategory->name}}</option>
      @endforeach
    @endforeach
    

    【讨论】:

    • 只有一个问题@pseudocode 我将如何将我的案例中的数据存储在表格中,例如每个帖子都有一个类别或可能有一个子类别,如果帖子是针对某个类别的,我怎么会不或仅使用一个选择字段的子类别
    • 在您的选择中,数据来自同一个表,因此每个表都有唯一的id。在后端,您可以在类别表中找到id,它会为您提供信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多