[英]Facing problem to show properly sub-categories in the Categories Dropdown list
[英]How to show sub-categories in the Categories Dropdown list
在我的代码中,我想在Products 表中的 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();
});
}
这是我的类别 Model
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');
}
这是我的产品 Model
4.产品.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. 我想要这样的数据
鞋--休闲鞋--正式鞋手机--Android手机--iphone
在您的类别 Model
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();
并通过您的 Controller 中的索引方法查看并在刀片中使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.