2016-10-13 2 views
1

Ich habe zwei Modelle Company und Employee, mit Tabellen in MySQL entspricht, companies und employees.

Ich habe diese Many-to-One-Beziehungen definiert:

Im Company Modell:

public function employees(){ 
     return $this->hasMany('App\Employee','company'); 
    } 

Im Employee Modell:

public function company(){ 
     return $this->belongsTo('App\Company','company'); 
    } 

company oben in den Verfahren ein vorzeichenloser ganzzahliger Fremdschlüssel in der Tabelle employees.

In basteln habe ich versucht $company->employees;, die eine Liste aller Mitarbeiter in der ausgewählten Firma zurückgibt. Allerdings, wenn ich $company->employees->id tun, um die IDs aller Mitarbeiter nur zu bekommen und nicht die anderen Reihen, es gibt mir den Fehler:

PHP error: Undefined property: Illuminate\Database\Eloquent\Collection::$id on line 1 

Antwort

1

Nun $company->employees gibt eine Auflistung, ->id ist keine Eigenschaft in der Sammlung, das ist Warum bekommst du den Fehler?

Wenn Sie ein Array abrufen möchten alle IDs Ihrer Mitarbeiter aus, die Sie dies tun könnte:

$company->employees()->lists('id'); 

Wenn Sie diese Zeilen lesen und mit Laravel ^5.3.* dann wäre die Antwort:

$company->employees()->pluck('id'); 

Dies würde eine Sammlung mit allen IDs zurückgeben, wenn Sie wollen, dass es ein Array ist, können Sie die ->toArray() dahinter ketten.

+0

Das funktioniert, könnten Sie bitte die Listen-Methode ein wenig erklären? Vielen Dank! – omrakhur

+0

Was ich auch verwirrt bin, ist, dass "id" eine Eigenschaft ist, wie es ein Feld auf dem Tisch ist, oder ist es nicht? – omrakhur

+0

Sicher, die Funktion [lists] (https://laravel.com/docs/4.2/queries#selects) gibt ein Array zurück, das alle Ihre IDs enthält. "Id" ist in der Tat eine Eigenschaft, aber Ihre Ergebnisse sehen ein bisschen so aus $ x = array (array ('id' => 1)); ', Sie haben versucht,' $ x ['id'] 'zu machen, während der' id' Wert tatsächlich in '$ x [0] ['id war '] ' – Neat

Verwandte Themen