在我的控制器中,我将模板传递给项目列表
$projects = Project::all();
return view('projects.index', compact('projects'));
现在一个项目有一个客户端,一个客户端属于一个项目。如果我在我的视图中循环我的项目,我会得到以下数据
#attributes: array:11 [▼
"id" => "25"
"jobNumber" => "J0001"
"projectName" => "Some Name"
"clientId" => "1"
"clientContact" => "Some Contact"
"contactEmail" => "email@email.co.uk"
"status" => "Email"
"deleted_at" => null
"created_at" => "2016-04-25 14:15:19"
"updated_at" => "2016-04-26 10:05:06"
]
如您所见,clientId为1.这链接到特定客户端。有没有办法使用此ID获取客户端名称?我知道如何在控制器中执行此操作,但我无法为具有客户端名称的每个项目传递变量,这太过分了。就目前而言,我正在传递所有项目的视图,并且每个项目都有一个clientId。不知何故,我需要将此命名为基于此。
谢谢
答案 0 :(得分:3)
你是否在模特中建立了关系:
<强>项目:强>
public function client()
{
return $this->hasOne('App\Project');
}
如果您这样做,只需拨打Project::find($id)->client
如果您想通过控制器转发它,您可以这样做:
$projects = Project::with('client');
return view('project.index', compact('projects'));
将客户端JSON嵌套在项目中。
修改强>
但是,如果我理解正确,你的问题是在视图中显示它而不需要做变量。如果您正在使用刀片进行查看,则可以使用foreach循环执行此操作:
@foreach($projects as $project)
{{$project->client->name}}
@endforeach
您只需遍历所有项目
答案 1 :(得分:1)
是
看到你为项目创建了一个模型。
您可以在该模型中为客户定义关系。
这一切都取决于你希望它拥有的关系。例如,项目可以有多个客户端。
假设一个项目有一个客户。
/**
* Get list of clients for project
* @return object
*/
public function client()
{
return $this->hasOne('App\Project');
}
然后在您的刀片模板中,您可以调用
{{ $project->client->name }}