【问题标题】:Laravel accessing collection data in blade without loop (key, value)Laravel在没有循环的刀片中访问集合数据(键,值)
【发布时间】:2018-05-27 21:30:12
【问题描述】:

我将数据存储在 meta_key 和 meta_value 列中。

是否可以将 meta_value 分配给 meta_key,以便可以像下面这样访问它?

{{ $responsedata->q1 }}

控制器:

  $getProjectLeads = RequestProjectLeads::where('r_id', '=', $rid)->get();
  $getRequestData = RequestData::where('r_id', '=', $rid)->get();
  $requestData = $getRequestData->toArray();
  return view('requests.home')->with('responsedata', $requestData);

数组:

array:2 [▼
  0 => array:6 [▼
    "id" => 5
    "r_id" => 15
    "meta_key" => "q1"
    "meta_value" => "zippyzoo"
    "created_at" => "2017-12-13 22:34:19"
    "updated_at" => "2017-12-13 22:34:44"
  ]
  1 => array:6 [▼
    "id" => 6
    "r_id" => 15
    "meta_key" => "q2"
    "meta_value" => "asdf"
    "created_at" => "2017-12-13 22:34:19"
    "updated_at" => "2017-12-13 22:34:19"
  ]
]

【问题讨论】:

  • 无需进入 foreach,您可以尝试通过在查询 RequestData::where('r_id', '=', $ 末尾添加 ->toArray() 将 getRequestData 转换为数组摆脱)->get()->toArray();或保持查询相同,只需将结果转换为数组 $data = getRequestData ->toArray();
  • 这将它踢出一个更简单但类似的数组array:1 [▼0 => array:6 [▼"id" => 1 "r_id" => 15 "meta_key" => "q1" "meta_value" => "test"... 这是否有助于我在刀片中访问我想要做的事情?
  • 问题是我缺乏对数组访问的理解。可能无法显示 meta_key = q1 的 meta_value?我试图避免 {{ $responsedata->get(0)->meta_value }} 并仅使用 meta_key 值作为定位器
  • 你不会回避这样的约定,或者像这样:$responseData->first(function($obj) { return $obj->meta_key == "qa"; }); 问题是你不能使用数组访问器,因为你不关心索引,但你关心的价值。这使事情变得复杂,因为您需要一个函数来遍历数组并根据给定值返回嵌套数组。没有数组访问器。
  • @Ohgodwhy 我更新了我的问题,以更好地反映刀片处理的预期结果,您可能已经回答了,但我不确定

标签: php arrays laravel laravel-5.5 laravel-blade


【解决方案1】:

只是一个例子:

在您的控制器中:

//...........
//...........
private $data;
public function Users()
{
     $this->data['page_title'] = "Users";
     $this->data['my_custom_data'] = "Users list bla bla"
     $this->data['users'] = User::where(....)->with(...)->get();
     return view('admin.users',['data'=>$this->data]); //view blade and data
 }
//........

在您的视图中:(打印或访问从上述控制器传递的数据的示例)

{{$data['page_title']}}

{{$data['users']}}
.....
foreach($data['users'] as $user){
    echo $user->email;
    echo $user->name;
}
{{$data['my_custom_data']}}
{{$data['users'][0]->name}}

【讨论】:

  • 谢谢——在这里帮助我的是{{$data['users'][0]->name}} 虽然,根据@Ohgodwhy 的评论,这是无法避免的。但这是我正在寻找的刀片帮助
猜你喜欢
  • 2019-10-11
  • 2021-12-05
  • 2021-03-10
  • 2017-09-26
  • 2021-01-21
  • 2018-04-04
  • 2016-06-29
  • 2023-03-17
  • 2016-04-14
相关资源
最近更新 更多