Sto utilizzando Laravel 4 e in particolare sto cercando una risposta che usi l'ORM eloquente.Laravel: restituire i risultati da più tabelle correlate utilizzando l'eloquente
Ho una tabella "compiti" quali contenitori un client_id e user_id assegnato a ogni riga.
client_id si riferisce ad un cliente su una "clienti" tavolo e user_id si riferisce a un utente su un "utenti" tavolo.
Quello che voglio fare: mostra tutte le attività e visualizzare i "clienti" nome e "utenti" first_name
Così il risultato sarebbe simile a questa nel mio (lama) vista:
@foreach($tasks as $task)
<tr>
<td>{{ $task->user->first_name }}</td>
<td>{{ $task->client->name }}</td>
<td>{{ $task->description }}</td>
</tr>
@endforeach
la vista sopra sputa fuori la task-> client-> nome $ perfettamente bene, ma purtroppo mostra un "T rying per ottenere la proprietà di non-oggetto" quando aggiungo la linea $ task-> user-> first_name
mio regolatore di simile a questa:
$tasks = Task::with(array('user', 'client'))->get();
return View::make('index', compact('tasks'));
quanto ho capito i miei modelli fare la differenza anche, così i miei modelli simile a questa:
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');
}
}
E:
class User extends Eloquent implements UserInterface, RemindableInterface {
public function task()
{
return $this->hasMany('Task');
}
}
E:
class Client extends Eloquent {
public function projects(){
return $this->hasMany('Project', 'client_id');
}
}
Qualche idea su come farlo funzionare? Mi sono grattato la testa per un po '- nota anche che non sono un rapporto di database pro quindi più semplice è la spiegazione, meglio è :)
Sarebbe mi sembra che la tabella Tasks è una tabella pivot in una relazione molti-a-molti. Probabilmente dovresti usare il metodo appartieneToMany() di Eloquent per collegare direttamente Client e User. Vedi [this] (http://laravel.com/docs/eloquent#working-with-pivot-tables) per informazioni su come aggiungere ulteriori campi alla tabella pivot. – ciruvan
Ciao @cuewizchris Ho dato un'occhiata alla documentazione e non riesco a capire come tradurre il loro esempio di Utente/Ruolo/Pivot in base alle mie esigenze. Stai dicendo che dovrei cambiare my hasMany() a toMany()? Sono un po 'perso qui. – Josh