我试图获取此标记字符串并迭代它以在另一个表格中获取相应标记的列:
1A-3,1-1,1-2,3-4,4-6,4-8,6-13,6-15,8-6,8-11,7A-4,7A-5 ,7A-6
$ministry = AgencyLogin::find(196);
$prefs = $ministry->Ministry_Preferences;
$tags = explode(',', $prefs);
foreach ($tags as $tag) {
$sub_categories[] = DB::table('descriptor')
->where('tag', $tag)
->select('subcategory', 'description')
->first();
}
//dd($sub_categories);
return view('agencydash', compact('sub_categories'));
dd($prefs)
打印正确的字符串。 $sub_categories[]
永远不会转换为实际数组,因此无法解析为一个数组,而我在Laravel中的有限经验意味着我不知道如何将这样的查询转换为数组而不是当前数组它是一个对象。
dd($sub_categories)
在我将其视为对象后,打印出一个似乎是随机的结果:
{#262 ▼
+"subcategory": "SUPPORT ROLE"
+"description": "Project Management"
}
我一直在教自己Laravel和php,所以这样的问题打开了更多的问题然后我才能回答。 谁知道我错过了什么?
答案 0 :(得分:1)
为什么要迭代$ tag而不使用whereIn方法并获取相关行的整个集合?
$ministry = AgencyLogin::find(196);
$prefs = $ministry->Ministry_Preferences;
$tags = explode(',', $prefs);
$sub_categories = DB::table('descriptor')
->whereIn('tag', $tags)
->get(['subcategory', 'description']);
//dd($sub_categories);
return view('agencydash', compact('sub_categories'));