I have a users table and an appointments table. In appointment table I have two user ID\'s (customer_id, staff_id). I want to retrieve all the
class T1 extends Eloquent {
protected $table = 't1';
}
class T2 extends Eloquent {
protected $table = 't2';
public function customer()
{
return $this->belongsTo('T1','c_id');//c_id - customer id
}
public function staff()
{
return $this->belongsTo('T1','s_id');//s_id - staff id
}
}
1) With use "with":
$list = \T2::with('customer')->with('staff')->get();
foreach ($list as $row) {
echo 'ID: '.$row->id.', customer: '.$row->customer->name.', staff: '.$row->staff->name.'<br>';
}
2) With joins:
$list = \T2::leftJoin('t1 as customer_table', 'customer_table.id','=','t2.c_id')
->leftJoin('t1 as staff_table', 'staff_table.id','=','t2.s_id')
->select('staff_table.name as staff_name','customer_table.name as customer_name')
->get();
foreach ($list as $row) {
echo 'customer: '.$row->customer_name.', staff: '.$row->staff_name.'<br>';
}
About second question - This is for subqueries. Look documentation: http://laravel.com/docs/eloquent#eager-loading