【发布时间】:2023-02-11 03:29:38
【问题描述】:
我是 Laravel 的新手,想过滤掉特定的产品。
我的数据库中有两个表,第一个是表products,第二个是表attributes。
产品表
Schema::create('products', function (Blueprint $table) {
$table->bigIncrements('id');
$table->BigInteger('category_id')->unsigned()->nullable();
$table->string('name');
$table->string('code');
$table->integer('status')->default(1);
$table->integer('featured')->default(1);
$table->string('image');
$table->longText('short_description');
$table->longText('long_description');
$table->timestamps();
})
产品属性表
Schema::create('product_attributes', function (Blueprint $table) {.
$table->bigIncrements('id');
$table->unsignedBigInteger('product_id');
$table->string('sku');
$table->string('size');
$table->string('color');
$table->string('price');
$table->string('stock');
$table->timestamps();
})
关系
因为我有单一产品的多个属性
class Product extends Model
{
use HasFactory;
public function attributes()
{
return $this->hasmany('App\Models\ProductAttributes', 'product_id');
}
}
我的刀片文件
<form action="{{url('/product/filter')}}" method="post">
@csrf
<input type="hidden"value="{{$slug}}"name="slug">
<div
class="custom-control custom-checkbox d-flex align-items-center justify-content-between mb-3">
<input name="color" onchange="javascript:this.form.submit();" type="radio" class="custom-control-input" id="black" value="black"> <label class="custom-control-label" for="black">Black</label>
</div>
</form>
我的控制器中有一个功能
public function shop()
{
$filter_products = Product::with('attributes')->where(['category_id' => $category->id, 'color' => $request->color]);
return view('frontend.shop', compact('filter_products'));
}
应用此功能后,我没有得到任何结果
请指导我如何根据特定尺寸或颜色在我的前端商店页面上过滤产品。 以及商店功能中的代码。
请回复我会非常感谢你
【问题讨论】: