【问题标题】:Displaying data in Blade template在 Blade 模板中显示数据
【发布时间】:2016-04-26 18:44:06
【问题描述】:

在我的控制器中,我将一个项目列表传递给我的模板

$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。不知何故,我需要根据这个来命名。

谢谢

【问题讨论】:

    标签: laravel laravel-5 laravel-blade


    【解决方案1】:

    您是否在模型中建立了这样的关系:

    项目:

    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
    

    您将简单地遍历所有项目

    【讨论】:

    • 嗨,关系就在那里。但问题是,您发布的内容需要在控制器中完成。当我通过所有项目的视图时,我真的不能按照你的建议去做,因为这意味着每个项目都有一个新变量
    • 很好地复制了我的答案。
    • 真的吗?在说蠢话之前检查时间
    • 刀片部分?你没有循环,你没有控制器返回,你肯定没有解释。问题是关于退回所有项目,而不是一个
    【解决方案2】:

    是的。

    看到您为项目创建模型。

    您可以在该模型中定义与客户的关系。

    这一切都取决于您希望它拥有的关系。例如,一个项目可以有多个客户吗?

    假设一个项目有一个客户。

     /**
     * Get list of clients for project
     * @return object
     */
    public function client()
    {
        return $this->hasOne('App\Project');
    }
    

    然后你可以在你的刀片模板中调用

    {{ $project->client->name }}
    

    【讨论】:

      猜你喜欢
      • 2019-09-26
      • 2015-04-25
      • 2023-03-20
      • 2021-03-08
      • 2016-10-02
      • 2012-03-18
      • 2019-08-21
      • 2018-02-04
      • 2018-08-29
      相关资源
      最近更新 更多