Używam Laravel 4, aw szczególności szukam odpowiedzi, która używa elokwentnej ORM.Laravel: zwracanie wyników z wielu powiązanych tabel przy użyciu wymownej metody:
Mam tabeli "zadania", które pojemnikom CLIENT_ID a USER_ID przypisany do każdego wiersza.
CLIENT_ID odnosi się do klienta na „klientów” stół i USER_ID odnosi się do użytkownika na „użytkowników” tabeli.
Co chcę zrobić: pokaż wszystkie zadania i wyświetli „klientów” nazwa i „użytkowników” first_name
więc wynik będzie wyglądać w moim (ostrzem) widok:
@foreach($tasks as $task)
<tr>
<td>{{ $task->user->first_name }}</td>
<td>{{ $task->client->name }}</td>
<td>{{ $task->description }}</td>
</tr>
@endforeach
powyższy pogląd wypluwa $ zadaniowego> client-> nazwa idealnie w porządku, ale niestety pokazuje „T uszenie uzyskać własność non-object”po dodaniu linii $ zadaniowego> user-> first_name
Mój kontroler wygląda następująco:
$tasks = Task::with(array('user', 'client'))->get();
return View::make('index', compact('tasks'));
Jak rozumiem moje modele zrobić różnicę też więc moje modele wyglądać następująco:
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');
}
}
I:
class User extends Eloquent implements UserInterface, RemindableInterface {
public function task()
{
return $this->hasMany('Task');
}
}
I:
class Client extends Eloquent {
public function projects(){
return $this->hasMany('Project', 'client_id');
}
}
Jakieś pomysły na to, jak to działa? Byłem zarysowania głowę na chwilę - również pamiętać, że nie jestem w bazie związek pro więc prostsze wyjaśnienie, tym lepiej :)
Wydaje mi się, że tabela jest tabelą zadania pivot w wiele do wielu relacji. Powinieneś prawdopodobnie użyć metody belongsToMany() metody Eloquent do bezpośredniego połączenia klienta i użytkownika. Zobacz [to] (http://laravel.com/docs/eloquent#working-with-pivot-tables), aby dowiedzieć się, jak dodać dodatkowe pola do tabeli przestawnej. – ciruvan
Hi @cuewizchris Zerknąłem na dokumentację i nie mogę się dowiedzieć, jak przetłumaczyć ich przykład User/Role/Pivot na moje potrzeby. Mówisz, że powinienem zmienić moje hasMany() na ToMany()? Jestem trochę zagubiony. – Josh