Cara menapis produk mengikut atribut (warna, saiz, dll.) dalam Laravel
P粉821274260
2023-08-28 00:17:09
<p>Saya baru menggunakan Laravel dan ingin menapis produk tertentu. </p>
<p>Saya mempunyai dua jadual dalam pangkalan data saya, yang pertama ialah jadual <kod>produk</kod> dan yang kedua ialah jadual <kod>atribut</kod>. </p>
<p><strong>Senarai Produk</strong></p>
<pre class="brush:php;toolbar:false;">Skema::create('products', function (Blueprint $table) {
$table->bigIncrements('id');
$table->BigInteger('category_id')->unsigned()->nullable();
$table->string('nama');
$table->string('kod');
$table->integer('status')->default(1);
$table->integer('ditampilkan')->default(1);
$table->string('imej');
$table->longText('short_description');
$table->longText('long_description');
$table->cap masa();
})</pre>
<p><strong>Jadual atribut produk</strong></p>
<pre class="brush:php;toolbar:false;">Skema::create('product_attributes', function (Blueprint $table) {.
$table->bigIncrements('id');
$table->unsignedBigInteger('product_id');
$table->string('sku');
$table->string('saiz');
$table->string('color');
$table->string('harga');
$table->string('stok');
$table->cap masa();
})</pre>
<p><strong>Hubungan</strong></p>
<p>Kerana saya mempunyai berbilang atribut untuk satu produk</p>
<pre class="brush:php;toolbar:false;">class Produk memanjangkan Model
{
gunakan HasFactory;
atribut fungsi awam()
{
return $this->hasmany('AppModelsProductAttributes', 'product_id');
}
}</pre>
<p><strong>Fail Blade Saya</strong></p>
<pre class="brush:php;toolbar:false;"><form action="{{url('/product/filter')}}"
@csrf
<jenis input="hidden"value="{{$slug}}"name="slug">
<div
class="kotak semak tersuai-kawalan tersuai d-flex align-item-center justify-content-antara mb-3">
<nama input="warna"onchange="javascript:this.form.submit();"jenis="radio"id-kawalan" ;hitam"> <kelas label="label-kawalan tersuai" untuk="hitam">Hitam</label>
</div>
</form></pre>
<p>Saya mempunyai fungsi dalam pengawal saya</p>
<pre class="brush:php;toolbar:false;">kedai fungsi awam()
{
$filter_products = Produk::with('attributes')->where(['category_id' => $category->id, 'color' => $request->color]);
return view('frontend.shop', compact('filter_products'));
}</pre>
<p>Saya tidak mendapat sebarang hasil selepas menggunakan fungsi ini</p>
<p>Sila bimbing saya cara menapis produk berdasarkan saiz atau warna tertentu pada halaman kedai hadapan.
dan kod apa yang akan disertakan dalam fungsi kedai. </p>
<p>Sila balas kepada saya, saya akan berterima kasih banyak</p>
Anda perlu menapis mengikut perhubungan, sila semak dokumentasi
https://laravel.com/docs/9 .x/eloquent-relationships#querying-relationship-existence
Contoh Gunakan WhereHas
Jika tidak digunakan di mana-mana, semua harta akan dikembalikan
Anda boleh menghalang tingkah laku ini menggunakan penapis yang sama digunakan di whereHas