0
I’m trying to pass data from two tables(SQL
) in a table structure HTML
. When I try to pass to mine View
, the Laravel
does not recognise the relationship method.
View
- atualizador.blade.php
@extends('layouts.sidebar')
@extends('layouts.app')
@section('content')
<table class="table">
<table style="width:80%; margin-left: 10%;">
<tr>
<th>Imagem</th>
<th>Código</th>
<th>Produto</th>
<th>Custo</th>
<th>Preço</th>
<th>Atualização</th>
<th>Status</th>
<th>Estoque</th>
<th>Distruibuidor</th>
<th>Ações</th>
</tr>
<tr>
@foreach($produtos as $produto)
<td>Imagem</td>
<td>{{$produto->erp_productid}}</td>
<td>{{$produto->produtosdescricao->erp_name}}</td>
<td>{{$produto->erp_cost}}</td>
<td>{{$produto->erp_price}}</td>
<td>{{$produto->erp_modifieddate}}</td>
<td>{{$produto->erp_status}}</td>
<td>{{$produto->erp_quantity}}</td>
<td>{{$produto->erp_distributor}}</td>
<td></td>
</tr>
@endforeach
</table>
</table>
<center>{{$produtos->links()}}</center>
@endsection
Controller
- ProdutosController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Produtos;
use App\ProdutosDescricao;
class ProdutosController extends Controller
{
public function index()
{
$id = 3;
$produtos = DB::table('erp_product')
->paginate(25);
$p = Produtos::find(3);
return view('atualizador')
->with('produtos', $produtos)
->with('p', $p);
}
}
Model
- Produtos.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Produtos extends Model
{
protected $table = 'erp_product';
protected $primaryKey = 'erp_productid';
public function produtosdescricao()
{
return $this->hasOne('App\ProdutosDescricao', 'erp_name');
}
}
Rota
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index');
Route::get('/atualizador', 'ProdutosController@index');
Route::get('/atualizaBanco', 'HomeController@atualiza');
Route::get('/insereBanco', 'HomeController@insere');
The code returns the error:
Undefined property: stdClass::$produtosdescricao (View: C:\comerciourbano\resources\views\atualizador.blade.php)
Any suggestions?
How’s your product/product relationship?
– Miguel
Hello, Miguel, I declared as hasOne in Products and Model Products:
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ProdutosDescricao extends Model
{
 protected $table = 'erp_product_description';
 protected $primaryKey = 'erp_productid';

 public function produto()
 {
 return $this->belongsTo('App\Produtos');
 }
}
– Vinícius
But there you go
belongsTo
, you don’t havehasOne
, and you should do the same in the product model– Miguel