How to pass data from two tables in a View?

0

I'm trying to pass data from two tables ( SQL ) to a HTML table structure. When I try to pass my View , Laravel does not recognize 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?

    
asked by anonymous 17.03.2017 / 18:29

1 answer

0

Do this:

Instead of using classe DB use classe Produtos :

<?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 = Produtos::with('produtosdescricao')
                           ->paginate(25);

      $p = Produtos::find(3);
      return view('atualizador')
              ->with('produtos', $produtos)
              ->with('p', $p);
    }
}

In this way the data is loaded (including performing well) to its View .

In the relationship, you would need to see how your tables are configured.

18.03.2017 / 05:20