Relacionamento da categoria no laravel Propriedade indefinida: stdClass ::

Saeed Karimi

Olá, estou trabalhando em um projeto de treinamento laravel. estou tendo problemas com modelos e relacionamentos quando tento obter o nome de cada categoria de produto.
Aqui está o meu modelo de produto

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
   public function category()
   {
   return $this->belongsTo('App\Category');
   }
}

e meu modelo de categoria

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
   protected $table = 'categories';

   public function products()
   {
      return $this->hasMany('App\Product');
   }
}

quando tento obter o nome da categoria para cada produto como este

      @foreach($products as $product)
      <tr>
        <td>{{ $product->id }}</td>
        <td>{{ $product->name }}</td>
        <td>{{ $product->category->name }}</td>
      </tr>
      @endforeach

enquanto executo a página, recebo este erro

Undefined property: stdClass::$category (View: /var/www/html/projectname/resources/views/my/products/index.blade.php)

Alguém pode me dizer o que está causando esse erro?

update
aqui está a estrutura da tabela
Products: id, name, category_id-> unsigned ()
Categories: id, name
e aqui está o código que eu uso para obter $ products

    $user_id = Auth::user()->id;
    $products = DB::table('products')->where('user_id', $user_id)->paginate(5);
    return view('my.products.index')->withProducts($products);
Jonathon

O problema é que você está usando o construtor de consultas do Laravel em vez do Eloquent, mas está tratando o resultado como se fosse o Eloquent.

Quando você faz:

$products = DB::table('products')->where('user_id', $user_id)->paginate(5);

A $productsvariável conterá uma Paginatorinstância, que contém seus itens como instâncias de stdClass. Se você quiser fazer isso com o Eloquent, deve tentar algo assim:

$products = Product::with('category')->where('user_id', $user_id)->paginate(5);

Isso garantirá que os itens retornados no paginador sejam instâncias de seu Productmodelo Eloquent, com o categoryrelacionamento carregado antecipadamente (ou seja, ele carregará o relacionamento de categoria para cada Productretornado usando uma consulta, em vez de 5 consultas, uma para cada Product).

Você deve então conseguir acessar $product->category->name.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Laravel - Propriedade indefinida: stdClass - consulta de pesquisa

Propriedade indefinida do Laravel: stdClass :: $ id error

Propriedade indefinida: stdClass :: $ point

obtendo erro Propriedade indefinida: stdClass :: $ workingtime

Como corrigir "Propriedade indefinida: stdClass :: $ gamme"

Propriedade indefinida: stdClass em meu controlador codeigniter

Aviso do PHP: Propriedade indefinida: stdClass :: $ following

Erro de relacionamento do Laravel: Propriedade indefinida: Illuminate \ Database \ Eloquent \ Collection :: $ id na linha 1

Erro de relacionamento do Laravel: Propriedade indefinida: Illuminate \ Database \ Eloquent \ Collection :: $ id na linha 1

Por que chamar um relacionamento onetoMany no Laravel 5.3 lança um erro de propriedade indefinida?

Id da propriedade indefinida Vue ao usar o Laravel Echo

Relacionamento do Laravel 5 Eloquent: não é possível modificar / sobrescrever a propriedade da tabela de relacionamento

Relacionamento do Laravel 5 Eloquent: não é possível modificar / sobrescrever a propriedade da tabela de relacionamento

A propriedade da janela é indefinida no cipreste

Variável indefinida: categoria de estoque no Laravel

Propriedade indefinida:> erro stdClass ao usar a coluna do tipo de data no Laravel. Como posso resolver isso?

Propriedade indefinida no Laravel usando Eloquent

Propriedade indefinida do Laravel no trabalho

Propriedade indefinida: stdClass :: $ 0 A API do Twitter retornou a coleção

Analise json com PHP. Obtendo propriedade indefinida: erros stdClass

Aviso: Propriedade indefinida: stdClass :: com valor json nulo

quantas imagens existem em determinada categoria com base na ordem da categoria obtendo uma linha em um relacionamento eloqüente laravel?

Relacionamento do Laravel: Tentando obter a 'descrição' da propriedade do não-objeto

Os relacionamentos do Laravel mudando as colunas da tabela tornam a propriedade indefinida

A propriedade modelErrors da resposta json é indefinida

PHP: Como obter a propriedade do não objeto (Mensagem de erro - Propriedade indefinida: stdClass :: $ 0)

Erro de `propriedade indefinida` em tarefas laravel

Laravel Eloquent HasOne :: $ id Propriedade indefinida

Propriedade indefinida: App \ Ticket :: $ status laravel 7