2016-11-04 47 views
2

我试图得到这串标签并遍历它以获得另一个表上各个标签的列:如何正确完成此爆炸与比较查询? Laravel 5.3

1A-3,1-1,1-2,3-4,4- enter image description here

$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):针对6,4-8,6-13,6-15,8-6,8-11,7A-4,7A-5,7A-6

检查打印正确的字符串。 $sub_categories[]永远不会转换为实际的数组,因此不能像一个一样解析,而我在Laravel中的有限经验意味着我不知道如何将这样的查询转换为数组,而不是当前的事物,即对象。

dd($sub_categories)后,我把它作为一个对象打印一个结果,这似乎是随机的:

{#262 ▼ 
    +"subcategory": "SUPPORT ROLE" 
    +"description": "Project Management" 
} 

我一直在自学Laravel和PHP稳步推进,所以像这种开放更多的问题问题,那么我就可以还没回答。 有人知道我错过了什么吗?

回答

1

你为什么要遍历$标签而不使用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')); 

Docs

+0

怎么把我太noobish知道这是一件事。 :,D:,D谢谢。解决了它。 – Mugluck

+1

@Mugluck很高兴我可以帮忙:) P.S.不要忘记删除$ sub_categories = []或其他东西,你必须在某个地方定义。 –