Problems with the return of the related hasMany

1

I am working on the Batch table of my project where each batch will have its only product and each product will have multiple batches. I set up the whole relationship and now I'm testing access by métodos . When doing $produto->lotes I get a satisfactory answer but when doing $lotes->produto is not getting anything returns.

My controller is as follows:

 public function mostrar($id){
    $lotes =  LoteProduto::where('CdProduto', $id)->get();

    dd($lotes->produto);

    if(Request::wantsJson()){
        return $lotes;
    }else{
        return view('LoteProduto.listLoteProduto', compact('lotes'));
    }
}

In my batch search I've tried these possibilities:

$lotes =  LoteProduto::where('CdProduto', $id)->first();
$lotes =  LoteProduto::where('CdProduto', $id)->get()->first();
$lotes =  LoteProduto::where('CdProduto', $id)->get()->item;

In my model Produto I have função :

public function lotes(){
    return $this->hasMany('App\LoteProduto', 'CdProduto', 'CdProduto');
}

that perfectly returns the batches to me.

Already in my model Lote I have:

class LoteProduto extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'CdProduto',
        'DtFrabricacao',
        'DtValidade',
        'QtdUnitProduzida'
    ];

    protected $primaryKey = 'CdLote';
    protected $dates = ['deleted_at'];

    public function produto()
    {
        return $this->belongsTo('App\Produto','CdProduto','CdProduto');
    }

}

When I try to access $lotes->produto the following error is displayed on screen:

  

ErrorException in BatchProductController.php line 25: Undefined property: Illuminate \ Database \ Eloquent \ Collection :: $ product

    
asked by anonymous 24.09.2016 / 04:25

1 answer

1

You have to load the relationship:

$lotes  = LoteProduto::with('produto')->where('CdProduto', $id)->get();
foreach($lotes as $lote):
    $lote->produto ...
endforeach;

and this returns a list, it has to go through for .

    
24.09.2016 / 06:19