Ich benutze Laravel 4 und insbesondere suche ich nach einer Antwort, die eloquente ORM verwendet.Laravel: Rückgabe von Ergebnissen aus mehreren verwandten Tabellen mit eloquent
Ich habe eine Tabelle „ Aufgaben“, die Behälter ein client_id und eine user_id jeder Reihe zugeordnet.
client_id auf einem "Clients" -Tabelle zu einem Client bezieht und user_id auf einem "Benutzer" -Tabelle für einen Benutzer bezieht.
Was ich will tun: alle Aufgaben zeigen und zeigen die "Kunden" Name und "Benutzer" first_name
So das Ergebnis wie dies in meinem (Klinge aussehen würde Ansicht):
@foreach($tasks as $task)
<tr>
<td>{{ $task->user->first_name }}</td>
<td>{{ $task->client->name }}</td>
<td>{{ $task->description }}</td>
</tr>
@endforeach
die obige Ansicht spuckt den aufgaben- $> client-> Namen völlig in Ordnung, aber leider zeigt ein „T rocknung Eigenschaft von nicht-Objekt zu erhalten“, wenn ich die Linie $ hinzufügen aufgaben-> user-> first_name
Mein Controller sieht wie folgt aus:
$tasks = Task::with(array('user', 'client'))->get();
return View::make('index', compact('tasks'));
Wie ich es meine Modelle machen auch einen Unterschied zu verstehen, so aussehen meine Modelle wie folgt aus:
class Task extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function client() {
return $this->belongsTo('Client');
}
public function user() {
return $this->belongsTo('User');
}
}
Und:
class User extends Eloquent implements UserInterface, RemindableInterface {
public function task()
{
return $this->hasMany('Task');
}
}
Und:
class Client extends Eloquent {
public function projects(){
return $this->hasMany('Project', 'client_id');
}
}
Irgendwelche Ideen, wie dies funktioniert? Ich habe eine Zeit lang mein Kopf wurde Kratzen - beachten Sie auch eine Datenbank Beziehung pro Ich bin nicht so die einfachere die Erklärung desto besser :)
an meinen Code überprüfen würde es mir scheinen, dass Ihre Aufgaben Tisch in einer many-to-many-Beziehung eine Pivot-Tabelle ist. Sie sollten wahrscheinlich die Methode "objectsToMany()" von Eloquent verwenden, um Client und Benutzer direkt zu verknüpfen. In [this] (http://laravel.com/docs/eloquent#working-with-pivot-tables) finden Sie Informationen zum Hinzufügen weiterer Felder zu Ihrer Pivot-Tabelle. – ciruvan
Hi @cuewizchris Ich habe mir die Dokumentation angeschaut und kann nicht herausfinden, wie ich ihr Beispiel von User/Role/Pivot auf meine Bedürfnisse übersetze. Willst du sagen, ich sollte meine hasMany() zu toMany() ändern? Ich bin hier ein bisschen verloren. – Josh