4

SOLVED: answer posted below

How can I get values from this pivot and specifications table?

I want to display this in a template like:

-Model (name from specifications table)

--Brand (attribute form pivot table): example1 (value from pivot table)

--Model (attribute form pivot table): example123 (value from pivot table) ...


In ProductController I tried returning something like this $product = Product::with('specifications')->first();, but then I can get only data from specifications table and if I try $product = Product::with('product_specification')->first(); I get error Call to undefined relationship [product_specification] on model [App\Product].


Pivot table:

public function up()
{
    Schema::create('product_specification', function (Blueprint $table) {
        $table->engine = 'InnoDB';

        $table->increments('id');
        $table->integer('product_id')->unsigned()->index();
        $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
        $table->integer('specification_id')->unsigned()->index();
        $table->foreign('specification_id')->references('id')->on('specifications')->onDelete('cascade');
        $table->string('attribute');
        $table->string('value');
    });
}

Specifications table:

public function up()
{
    Schema::create('specifications', function (Blueprint $table) {
        $table->engine = 'InnoDB';

        $table->increments('id');
        $table->string('name')->unique();
        $table->timestamps();
    });
}

Product model:

public function specifications() 
{
    return $this->belongsToMany(Specification::class, 'product_specification');
}
3
  • What have you done to How can I get values from this pivot and specifications table? @rudolph Commented Apr 9, 2017 at 9:05
  • @AndyK In ProductController I tried returning something like this $product = Product::with('specifications')->first();, but then I can get only data from specifications table and if I try $product = Product::with('product_specification')->first(); I get error Call to undefined relationship [product_specification] on model [App\Product]. Commented Apr 9, 2017 at 9:07
  • put it in the question mate. We have to know that! @rudolph Commented Apr 9, 2017 at 9:08

1 Answer 1

3

I had to add withPivot() to my Product model

public function specifications() {
    return $this->belongsToMany(Specification::class, 'product_specification')->withPivot('attribute', 'value');
}

And then in template:

foreach($product->specifications as $specification) {
    echo 'name: ' . $specification->name . ' attribute: ' . $specification->pivot->attribute . ' value ' . $specification->pivot->value . '</br>';
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.