【问题标题】:How to show sub-categories in the Categories Dropdown list如何在类别下拉列表中显示子类别
【发布时间】:2020-05-24 17:03:21
【问题描述】:

在我的代码中,我想在 Products 表的 Category 下显示 categorysub category

这里是我的类别表

1.

 public function up() { Schema::create('categories', function (Blueprint $table) {

    $table->increments('id');
    $table->integer('parent_id'); 
    $table->string('name');  
    $table->rememberToken();
    $table->timestamps();

    });
}

这里是我的产品表

2.

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('category_id');
        $table->string('product_name');
        $table->string('product_code');
        $table->timestamps();
    });
}

这里是我的类别模型

3.Category.php

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model { protected $guarded=[];

public function products(){
    return $this->hasMany('App\Product');
}

这里是我的产品模型

4.Product.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    public function category(){
        return $this->hasone('class::Category');
    }

}

现在这是我的 ProductsController.php

5.ProductsController.php

<?php

namespace App\Http\Controllers;

use App\Category;
use App\Product;
use Session;
use Illuminate\Http\Request;

class ProductsController extends Controller
{

     public function addproduct(Request $request){
         $product=New Product();
         $product->category_id=$request['category_id'];
         $product->product_name=$request['product_name'];
         $product->product_code=$request['product_code'];
         $product->status = request('status');
         $product->save();
         return back()->with('success','product Upload Successfully!');

         }
}

这是我的 addproduct.blade.php 文件

6.addproduct.blade.php

<form class="form-horizontal" method="post" action="{{route('add.product')}}" name="add_product" id="add_product" novalidate="novalidate">
                                @csrf

                                <div class="control-group">
                                    <label class="control-label">main Category </label>
                                    <div class="controls">
                                        <select name="category_id" id="category_id" style="width:220px;">

                                            <option value="0">Main Category</option>
                                            @foreach(App\Category::all() as $cat)
                                                <option value="{{$cat->id}}" >{{$cat->name}}</option>
                                            @endforeach

                                        </select>
                                    </div>
                                </div>


                                <div class="control-group">
                                    <label class="control-label">Product Name</label>
                                    <div class="controls">
                                        <input type="text" name="product_name" id="product_name">
                                    </div>
                                </div>

                                <div class="control-group">
                                    <label class="control-label">Product Code</label>
                                    <div class="controls">
                                        <input type="text" name="product_code" id="product_code">
                                    </div>
                                </div>

                                <div class="control-group">
                                    <label class="control-label">Product Color</label>
                                    <div class="controls">
                                        <input type="text" name="product_color" id="product_color">
                                    </div>
                                </div>


                                <div class="form-actions">
                                    <input type="submit" value="submit" class="btn btn-success">
                                </div>

                            </form>

7.我想要这样的数据

鞋 ——休闲鞋 ——正装鞋 移动的 --安卓手机 --iphone

【问题讨论】:

  • 你的要求不清楚,请将你的要求写成树
  • 你的问题是什么?

标签: php laravel eloquent


【解决方案1】:

在您的类别模型中

class Category extends Model { protected $guarded=[];

    public function products(){
        return $this->hasMany('App\Product');
    }

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

在你的刀片中

@foreach(App\Category::all() as $cat)
    <option value="{{$cat->id}}" >{{ isset($cat->parent->name) ? $cat->parent->name . ' -- ' : '' }}{{$cat->name}}</option>
@endforeach

Ps:对于您的开发:刀片用于查看代码,您应该在刀片中使用变量而不是模型。所以像 $categories = Category::all(); 这样的 crate 变量,并在控制器的 index 方法中传递给视图,并在刀片中使用它。

【讨论】:

  • 未定义属性:Illuminate\Database\Eloquent\Relations\BelongsTo::$name(查看:F:\laragon\www\flipcart\resources\views\admin\products\addproduct.blade.php)
  • 请使用 parent 而不是 parent() 并请与 isset 检查
  • @foreach(App\Category::all() as $cat) @endforeach
  • 它 90% 有效,但在我的表单中我的默认值应该是选择,但它显示为类别值例如:- 首先默认值有选择,然后我选择一个值
  • 检查
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-02
相关资源
最近更新 更多