Boa noite, gostaria de um help de vocês. Meu relacionamento de classes não está funcionando, gostaria de saber como faço pra acessar da view. Não sei se o problema está no relacionamento ou na sintaxe de monstrar na view. . O que estou tentando fazer é o seguinte UMA COMPRA PODE TER UM OU VÁRIOS PRODUTOS.
No caso minha tabela COMPRA está assim:
id
id_produto
id_carrinho
Então a partir do id_produto na tabela COMPRA eu queria pegar os atributos de produtos. Segue os códigos abaixo:
MODEL COMPRA
class Compra extends Model {
public function carrinho(){
return $this->belongsTo('App\Carrinho');
}
public function produto(){
return $this->hasMany(Produto::class, 'id_produto');
}
}
MODEL PRODUTO
class Produto extends Model{
public function compra(){
return $this->belongsTo(Compra::class);
}
}
MIGRATION COMPRAS
public function up()
{
Schema::create('compras', function (Blueprint $table) {
$table->increments('id');
$table->integer('id_carrinho');
$table->integer('id_produto');
$table->integer('qtde_produto');
$table->timestamps();
$table->foreign('id_carrinho')->references('id')->on('carrinhos');
$table->foreign('id_produto')->references('id')->on('produtos');
});
}
TENTANDO ACESSA:
$produtos = Compra::with('id_produto')->get();
Dai aparece esse erro:
Call to undefined relationship [id_produto] on model [App\Compra].
A migration de compras está no tópico, a de produto é essa
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProdutosTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('produtos', function (Blueprint $table) {
$table->increments('id');
$table->string('nome');
$table->string('ingredientes');
$table->string('preco');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('produtos');
}
}