2014-02-19 2 views
13

Ich benutze Laravel 4, um mein erstes Modell einzurichten, um alle Zeilen aus einer Tabelle namens posts zu ziehen.Wählen Sie alle aus Tabelle mit Laravel und Eloquent

Im Standard-MySQL würde ich verwenden:

SELECT * FROM posts; 

Wie erreiche ich dies in meinem Laravel 4-Modell?

Siehe unten für meine komplette Modell-Quellcode:

<?php 

class Blog extends Eloquent 
{ 

    /** 
    * The database table used by the model. 
    * 
    * @var string 
    */ 
    protected $table = 'posts'; 

    public function getAllPosts() 
    { 

    } 

} 

Antwort

22

Sie rufen einfach

Blog::all(); 

//example usage. 
$posts = Blog::all(); 

$posts->each(function($post) // foreach($posts as $post) { } 
{ 
    //do something 
} 

von überall in Ihrer Anwendung.

Das Lesen der documentation wird viel helfen.

+0

Seien Sie vorsichtig mit ':: all()', wie es liest _everything_ aus der Tabelle in den Speicher. Wenn Ihre Tabelle viele Datensätze enthält, können Sie die Speichergrenze von PHP auf diese Weise schnell überschreiten. Die Lösung ist anscheinend, 'Builder :: cursor()' oder 'Builder :: chunk()' zu verwenden. – beporter

0
public function getAllPosts() 
{ 
    return Blog::all();   
} 

Werfen Sie einen Blick auf die docs dies wahrscheinlich das erste, was sie erklären ..

3

Nun, es mit eloquent zu tun würden Sie tun: Sie

Blog:all(); 

aus Ihrem Modell tun:

return DB::table('posts')->get(); 

http://laravel.com/docs/queries

+0

Warum nicht nur $ this-> all()? Das scheint wirklich umständlich. – Sturm

0

Wenn Sie alle Datensätze erhalten möchten, aber über einem Feld bestellt (s), alle() wird nicht funktionieren, dann würden Sie erlassen:

MyModel::orderBy('field1', 'desc')->orderBy('field2')->get(); 
9

Es gibt 3 Möglichkeiten, wie man das tun kann.

1.

$entireTable = TablemModelName::all(); 

zB

$posts = Posts::get(); 
  1. diese Zeile vor der Klasse in der Steuerung setzen

    Verwendung DB;

nun in der Klasse

$posts = DB::table('posts')->get(); // it will get the entire table 
  1. diese Zeile vor der Klasse in der Steuerung setzen

    Verwendung DB;

nun in der Steuerung

$posts = DB::select('SELECT * FROM posts'); 
3

gehen zu den Controller schreiben diese in Funktion

public function index() 
{ 
    $posts = \App\Post::all(); 

    return view('yourview', ['posts' => $posts]); 
} 

im Blick zu zeigen, es

@foreach($posts as $post) 
    {{ $post->yourColumnName }} 
@endforeach 
1

Wie Um alle Daten aus der Datenbank mit laravel betrachten zu können, hoffe ich, dass diese Lösung für Anfänger hilfreich ist.

In Ihrem Controller

public function get(){ 
     $types = select::all(); 
     return view('selectview')->with('types', $types);} 

Import Datenmodell innerhalb des Controllers, das Datenmodell in meiner Anwendung als Select genannt.

use App\Select; 

Inklusive meiner beiden Controller sieht so etwas wie dieses

use App\Select; 
class SelectController extends Controller{        
    public function get(){ 
    $types = select::all(); 
    return view('selectview')->with('types', $types);} 

wählen Modell

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Select extends Model 
{ 
    protected $fillable = [ 
     'name', 'email','phone','radio1','service', 
    ]; 


    protected $table = 'selectdata'; 
    public $timestamps = false; 
} 

innen Router

Route::get('/selectview', '[email protected]'); 

selectview.blade.php

@foreach($types as $type) 
    <ul> 
    <li>{{ $type->name }}</li> 
    </ul> 

    @endforeach 
+0

es hat meine Zeit gerettet. Danke –

Verwandte Themen