Laravel preluare date din mysql

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
sterica
Mesaje: 285

Laravel preluare date din mysql

Salutare,

Sunt la inceputul unui proiect in Laravel si nu reusesc sa inteleg cum pot aduce date dintr-o tabela mysql.

In strucutra de directoare: resources->view->comenzi->valori ; am un fisier vanzari.blade.php cu urmatorul cod, iar in acest fisier vreau sa adaug in select option, lista cu furnizori din extensia controller-ului Furnizori.php

Cod: Selectaţi tot

<select>
	<option value="*">Alege furnizor</option>
	...aici vreau sa aduc restul de furnizori din query...
</select>
In directorul: app am un fisier FurnizoriTbl.php

Cod: Selectaţi tot

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class FurnizoriTbl extends Model
{
    protected $table = 'furnizori';
    protected $primaryKey  = 'ID';    
    protected $connection = 'liconn';
    public $timestamps = false;
}
In strucutra de directoare: app->Http->Controllers am un fisier Furnizori.php unde se afla query-ul care imi genereaza lista cu furnizori

Cod: Selectaţi tot

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Cache;
// use App\Http\Controllers\Utile;
// use Illuminate\Support\Facades\Storage;
// use Carbon\Carbon;

use App\FurnizoriTbl;

class Furnizori extends Controller
{
    private $dbconn = 'liconn';
    
    function getFurnizori(){
        return DB::connection($this->dbconn)
                ->table('FurnizoriTbl')
                ->select('ID', 'Furnizor')
                ->where('NIVEL', 1)
                ->orderBy('Furnizor', 'asc')
                ->get();
    }

}
Cele doua extensii ale Controller-ului FurnizoriTbl.php si Furnizori.php le-am creat dupa inspiratiile de pe google, insa nu stiu ce utilitate are extensia FurnizoriTbl si nici cum sa aduc datele returnate de in select option.

Multumesc!

MarPlo Mesaje: 4343
Salut,
Nu am mai lucrat de mult cu Laravel, din ce stiu se face un Controler cu metoda care returneaza datele pt. View, fisierul Template (view) si un Route care apeleaza metoda dorita din acel controler.

Cred ca asa ceva.

- In template (resources/view/comenzi/valori/vanzari.blade.php):

Cod: Selectaţi tot

<select>
  <option value="*">Alege furnizor</option>
@foreach($rows as $row)
  <option value="{{$row->ID}}">{{$row->Furnizor}}</option>
@endforeach
</select>
- In controler:

Cod: Selectaţi tot

<?php
namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class Furnizori extends Controller {
  //@return view
  public function getFurnizori(){
    $rows = DB::select('SELECT ID, Furnizor FROM FurnizoriTbl WHERE NIVEL =:nv ORDER BY  Furnizor ASC', ['nv'=>1]);
    return view('comenzi.valori.vanzari', ['rows' => $rows]);
  }
}
Vezi daca iti sunt de folos aceste tutoriale de pe site:
- marplo.net/php-mysql/laravel-lucru-baza-date-mysql
- marplo.net/php-mysql/laravel-mysql-baza-date-constructor-sql

Studiaza si acest exemplu de aplicatie CRUD cu Laravel:
- marplo.net/php-mysql/laravel-exemplu-simplu-aplicatie-crud

sterica Mesaje: 285
Marplo multumesc mult de ajutor, voi merge pe aceasta varianta.
Mai am o intrebare cu privire la acest subiect. Clasa Furnizori imi returneaza datele in fisierul dorit, practic o face utila numai intr-un loc, dar daca doresc sa folosesc clasa si in alta parte?

MarPlo Mesaje: 4343
Poti sa faci mai multe metode in clasa pt. diferite situatii, o incluzi acolo unde vrei sa o folosesti si apelezi metodele dorite; de asemenea poti face numele fisierului si datele din ea variabile; de exemplu primite ca parametru.

Cod: Selectaţi tot

// $vname - cale fisier view; $nv - valoare pt. nivel in sql
public function getFurnizori($vname, $nv){
  $rows = DB::select('SELECT ID, Furnizor FROM FurnizoriTbl WHERE NIVEL =:nv ORDER BY  Furnizor ASC', ['nv'=>$nv]);
  return view($vname, ['rows' => $rows]);
}

Subiecte similare