vendredi 18 octobre 2019

Get product category name from DB in Laravel

I am beginner in Laravel. I use in my project Laravel 5.8.

I have product:

class Product extends Model
{
    use scopeActiveTrait;

    protected $fillable = ['company_id', 'id_delivery_vat', 'id_product_vat', 'id_producer', 'name', 'qr_code', 'oe_code', 'enable', 'promo', 'description', 'product_price', 'promo_product_price', 'product_delivery_price', 'quantity', 'url_address'];
    protected $quarded = ['id'];
    public $timestamps = true;

    public function category()
    {
        return $this->belongsTo('App\ProductCategory', 'id_producer');
    }

    public function producer()
    {
        return $this->belongsTo('App\ProductProducer', 'id_producer');
    }

    public function vat()
    {
        return $this->belongsTo('App\VAT', 'id_product_vat');
    }

    public function delivery_vat()
    {
        return $this->belongsTo('App\VAT', 'id_delivery_vat');
    }

    public function selected_categories()
    {
        return $this->hasMany('App\ProductSelectedCategory');
    }
}
Schema::create('products', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->bigInteger('company_id')->unsigned();
            $table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade');
            //$table->bigInteger('category_id')->unsigned();
            //$table->foreign('category_id')->references('id')->on('product_categories');
            $table->smallInteger('id_delivery_vat')->unsigned();
            $table->foreign('id_delivery_vat')->references('id')->on('vat');
            $table->smallInteger('id_product_vat')->unsigned();
            $table->foreign('id_product_vat')->references('id')->on('vat');
            $table->bigInteger('id_producer')->unsigned();
            //$table->foreign('id_producer')->references('id')->on('product_producers');
            $table->string('name', 120)->nullable();
            $table->string('qr_code', 120)->nullable();
            $table->string('oe_code', 120)->nullable();
            $table->char('enable', 1)->default(0);
            $table->char('promo', 1)->default(0);
            $table->longText('description')->nullable();
            $table->decimal('product_price', 9, 2)->default(0);
            $table->decimal('promo_product_price', 9, 2)->default(0);
            $table->decimal('product_delivery_price', 9, 2)->default(0);
            $table->unsignedInteger('quantity')->default(0);
            $table->string('url_address', 160);
            $table->timestamps();
            $table->engine = "InnoDB";
            $table->charset = 'utf8mb4';
            $table->collation = 'utf8mb4_unicode_ci';
        });

One product in my database can be added to 1 category and 9 subcategories.

Selected category for product:

Schema::create('product_selected_categories', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->bigInteger('category_id')->unsigned()->index();
            //$table->foreign('category_id')->references('id')->on('product_categories');
            $table->bigInteger('subcategory1_id')->default(0);
            $table->bigInteger('parent_subcategory1_id')->default(0);
            $table->bigInteger('subcategory2_id')->default(0);
            $table->bigInteger('parent_subcategory2_id')->default(0);
            $table->bigInteger('subcategory3_id')->default(0);
            $table->bigInteger('parent_subcategory3_id')->default(0);
            $table->bigInteger('subcategory4_id')->default(0);
            $table->bigInteger('parent_subcategory4_id')->default(0);
            $table->bigInteger('subcategory5_id')->default(0);
            $table->bigInteger('parent_subcategory5_id')->default(0);
            $table->bigInteger('subcategory6_id')->default(0);
            $table->bigInteger('parent_subcategory6_id')->default(0);
            $table->bigInteger('subcategory7_id')->default(0);
            $table->bigInteger('parent_subcategory7_id')->default(0);
            $table->bigInteger('subcategory8_id')->default(0);
            $table->bigInteger('parent_subcategory8_id')->default(0);
            $table->bigInteger('subcategory9_id')->default(0);
            $table->bigInteger('parent_subcategory9_id')->default(0);
            $table->bigInteger('product_id')->unsigned()->index();
            $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');;
        });

class ProductSelectedCategory extends Model
{
    protected $quarded = ['id'];
    protected $fillable = ['subcategory1_id', 'parent_subcategory1_id', 'category_id', 'subcategory2_id', 'parent_subcategory2_id', 'subcategory3_id', 'parent_subcategory3_id', 'subcategory4_id', 'parent_subcategory4_id', 'subcategory5_id', 'parent_subcategory5_id', 'subcategory6_id', 'parent_subcategory6_id', 'subcategory7_id', 'parent_subcategory7_id', 'subcategory8_id', 'parent_subcategory8_id', 'subcategory9_id', 'parent_subcategory9_id', 'product_id' ];
    public $timestamps = false;
}

Product category:

Schema::create('product_categories', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->bigInteger('company_id')->unsigned();
            $table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade');
            $table->char('enable', 1)->default(0);
            $table->string('name', 85)->nullable();
            $table->string('url_address', 160);
            $table->integer('level')->default(0);
            //$table->bigInteger('parent_id')->default(0);
            //$table->bigInteger('parent_id')->nullable();
            $table->unsignedBigInteger('parent_id')->nullable();
            $table->foreign('parent_id')->references('id')->on('product_categories')->onDelete('cascade');
            $table->bigInteger('number')->default(0);
            $table->engine = "InnoDB";
            $table->charset = 'utf8mb4';
            $table->collation = 'utf8mb4_unicode_ci';
        });

I have product list:

@foreach($products as $product)


@foreach ($product->selected_categories as $category)
 // here I want print category and subcategory names
@endforeach

@endforeach

I would like to display the category and subcategory names to which the product belongs.

For example (product list):

- $category->category_id = ProductSelectedCategory.id (name),
- $category->subcategory1_id = ProductSelectedCategory.id (name),
- $category->subcategory2_id = ProductSelectedCategory.id (name),
- $category->subcategory3_id = ProductSelectedCategory.id (name),
- $category->subcategory4_id = ProductSelectedCategory.id (name),
- $category->subcategory5_id = ProductSelectedCategory.id (name),
....
- $category->subcategory9_id = ProductSelectedCategory.id (name),

How can I display these category names and subcategories for products?



from Newest questions tagged laravel-5 - Stack Overflow https://ift.tt/2VWajYI
via IFTTT

Aucun commentaire:

Enregistrer un commentaire