在 Blade 模板中显示数据
Displaying data in Blade template
在我的控制器中,我向模板传递了一个项目列表
$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。不知何故,我需要根据这个来命名。
谢谢
你在模型中建立关系了吗:
项目:
public function client()
{
return $this->hasOne('App\Project');
}
如果您这样做了,只需致电 Project::find($id)->client
即可联系到您需要的客户
如果想通过controller转发,可以这样:
$projects = Project::with('client');
return view('project.index', compact('projects'));
这将在项目下嵌套客户端JSON。
编辑:
但是,如果我理解正确的话,您的问题是在视图中显示它而不需要做大量的变量。如果您使用 blade 作为视图,则可以像这样使用 foreach 循环:
@foreach($projects as $project)
{{$project->client->name}}
@endforeach
而您将简单地遍历所有项目
是的。
看到您为项目创建模型。
您可以在该模型中定义与客户的关系。
这完全取决于您希望它拥有的关系。例如,一个项目可以有多个客户吗?
假设一个项目有一个客户。
/**
* Get list of clients for project
* @return object
*/
public function client()
{
return $this->hasOne('App\Project');
}
然后在您的 blade 模板中您可以调用
{{ $project->client->name }}
在我的控制器中,我向模板传递了一个项目列表
$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。不知何故,我需要根据这个来命名。
谢谢
你在模型中建立关系了吗:
项目:
public function client()
{
return $this->hasOne('App\Project');
}
如果您这样做了,只需致电 Project::find($id)->client
如果想通过controller转发,可以这样:
$projects = Project::with('client');
return view('project.index', compact('projects'));
这将在项目下嵌套客户端JSON。
编辑:
但是,如果我理解正确的话,您的问题是在视图中显示它而不需要做大量的变量。如果您使用 blade 作为视图,则可以像这样使用 foreach 循环:
@foreach($projects as $project)
{{$project->client->name}}
@endforeach
而您将简单地遍历所有项目
是的。
看到您为项目创建模型。
您可以在该模型中定义与客户的关系。
这完全取决于您希望它拥有的关系。例如,一个项目可以有多个客户吗?
假设一个项目有一个客户。
/**
* Get list of clients for project
* @return object
*/
public function client()
{
return $this->hasOne('App\Project');
}
然后在您的 blade 模板中您可以调用
{{ $project->client->name }}