2016-09-05 5 views
1

Hallo Ich schreibe eine API und möchte mehr Informationen über das zugehörige Modell anzeigen.Informationen über verwandte Modelle in Laravel

routes.php

Route::resource('makes', 'MakesController'); 

MakesController.php

class MakesController extends Controller 
{ 
    public function index() 
    { 
     $data = Make::all(); 
     return response()->json($data); 
    } 
} 

Diese nur Informationen über die Marken zurückgibt (id, name) aber wie kann ich zeigen auch, wie viele Modelle hat jeder machen?

ich diese beiden Modelle

class Make extends Model 
{ 
    public function models() 
    { 
     return $this->hasMany('App\CarModel'); 
    } 
} 


class CarModel extends Model 
{ 
    public function make() 
    { 
     return $this->belongsTo('App\Make'); 
    } 
} 

Antwort

1

Sie $visible Feld in der Klasse des Make Modell wie folgt definieren definiert haben:

protected $visible = ['models']; 

Dies hängt automatisch die zugehörige Modell des Arrays zu array/json.

Sie können auch eine optionale Art und Weise mit makeVisible Methode verwenden:

class MakesController extends Controller 
{ 
    public function index() 
    { 
     $data = Make::all(); 
     return response()->makeVisible('models')->json($data); 
    } 
} 
+0

versuchte ich, dass aber ich bin zu undefinierten Methode Illuminate \ Database bekommen Aufruf \ query \ Builder :: getModelsAttribute() – handsome

+0

Vielleicht mit dem Versuch '$ visible' Feld installed' $ atends'. –

+0

schön! Gibt es eine Möglichkeit, es optional zu machen? Ie. einen zusätzlichen Parameter in der URL senden, um es anzufügen oder nicht? – handsome

Verwandte Themen