[英]Retrieve Related Models using Laravel 4
我有3個表格:Users,Projects,Items和Friends。 我想獲取一個項目的所有項目,並與相關的朋友列出每個項目。 我的模型中缺少什么嗎? 最終,我希望得到與這些物品相關的所有朋友。
// CONTROLLER
public function show($id)
{
$uid = Auth::user()->id;
$projects = Project::find($id)->with('item.friend')->get();
return View::make('projects.show', compact('projects'));
}
//VIEW
@foreach ($projects as $project)
@foreach ($project->friend as $friend)
<li>
<a href="#" class='itemLink' >{{$friend->email}}</a>
<a href="#" class='itemLink' >{{$projects->item->name}}</a>
</li>
@endforeach
@endforeach
// MODELS
class User extends Eloquent {
public function project()
{
return $this->hasMany('Project');
}
public function item()
{
return $this->hasMany('Item');
}
public function friend()
{
return $this->hasMany('Friend');
}
class Project extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function item()
{
return $this->hasMany('Item');
}
public function friend()
{
return $this->hasMany('Friend');
}
class Item extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function friend()
{
return $this->hasMany('Friend');
}
class Friend extends Eloquent {
protected $guarded = array();
public static $rules = array();
乍一看,您的模型似乎還可以。 我認為既然您正在建立item.friend
關系,這條線
@foreach ($project->friend as $friend)
應該,
@foreach ($project->item->friend as $friend)
您錯過了一個循環。 我建議在建立多對多關系時,請確保您的方法是復數形式。 嘗試閱讀代碼時,這更有意義。 然后,您可以將@foreach $project->items as $item
或者將$item->friends as $friend
。
@foreach ($projects as $project)
@foreach ($project->item as $item)
@foreach($item->friend as $friend)
<li>
<a href="#" class='itemLink' >{{$friend->email}}</a>
<a href="#" class='itemLink' >{{$item->name}}</a>
</li>
@endforeach
@endforeach
@endforeach
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.