2015-11-03 28 views
0

我懷疑我在任何地方都找不到答案。 我是新來的雄辯,並使其基本的東西,它是優秀的! 現在我需要查詢來自不同表格的數據,我想知道我是否可以用雄辯的方式做到這一點。 我有兩個型號:在Laravel 5.1中使用口才的內部加入

class Worker extends Model { 

protected $table = 'workers'; 
public $timestamps = true; 

public function area() 
{ 
    return $this->belongsTo('Area'); 
} 

} 

而這一次

class Area extends Model { 

protected $table = 'areas'; 
public $timestamps = true; 

public function worker() 
{ 
    return $this->hasMany('Worker'); 
} 

} 

所以基本上工人屬於一個區域,一個區域有許多工人。 現在我想在表格中顯示工人的名字和他所屬區域的名字。

我可以使用查詢生成器來做到這一點,但我想知道我是否可以用雄辯的方式做到這一點。

我看到laracast後使用此代碼:

$workers = Worker::with('area')->get(); 

現在,當我使用,我得到以下錯誤:

Class 'Area' not found 

我不知道爲什麼我得到這個錯誤時,功能「區域」在工體類存在並在WorkerController我使用

use App\Area; 

我想什麼能夠做的是以下幾點:

@foreach ($workers as $worker) 
<td>{{ $worker->name }}</td> 
<td>{{ $worker->lastname }}</td> 
<td>{{ $worker->areas->name }}</td> 
@endforeach 

就像我說的,我已經我能夠accompish此使用laravel的查詢生成器,但我只是想知道如果我能更多地利用雄辯:) 的感謝您的時間。

萬一有人問這是我的原始查詢:

$workers = DB::table('workers') 
        ->join('areas', 'areas.id', '=', 'workers.area_id') 
        ->select('workers.*', 'areas.name as area') 
        ->get(); 

這是我使用的一個,它完美的作品很好,謝謝你! :)

回答

0

你在你的關係缺少的命名空間。

public function area() 
{ 
    return $this->belongsTo('App\Area'); 
} 

public function worker() 
{ 
    return $this->hasMany('App\Worker'); 
} 
+0

非常感謝你:) – iRynoh

0

您需要使用的功能就像你在型號命名爲「區域」而不是「區」:

@foreach ($workers as $worker) 
    <td>{{ $worker->name }}</td> 
    <td>{{ $worker->lastname }}</td> 
    <td>{{ $worker->area->name }}</td> 
@endforeach