How to Select Categories in Php Web App?
13-06-2017Category table:
| id | adi | url | parent |
| 1 | Elektronik | elektronik | NULL |
| 2 | Laptop | laptop | 1 |
We can use following codes to extract parent->child category array:
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$categories = DB::table('kategori as k1')
->join('kategori as k2', 'k1.id', '=', 'k2.parent')
->select('k1.adi as parent_adi', 'k1.url as parent_url', 'k2.adi as child_adi', 'k2.url as child_url')
->get();
$parents = array();
$parentNames = array();
foreach ($categories as $category) {
if (in_array($category->parent_adi, $parentNames)) continue;
$parentNames[] = $category->parent_adi;
$parents[] = array("adi" => $category->parent_adi, "url" => $category->parent_url);
}
$result = array();
foreach ($parents as $parent) {
$children = array();
foreach ($categories as $category) {
if ($parent["adi"] == $category->parent_adi) {
$children[] = array("adi" => $category->child_adi, "url" => $category->child_url);
}
}
$result[] = array("parent" => $parent, "children" => $children);
}
return view('client.index')->with("categories", $result);
}
index.blade.php page
<div class="collapse navbar-collapse" id="bs-megadropdown-tabs">
<ul class="nav navbar-nav">
<li class="active"><a href="home" class="act">Ana Sayfa</a></li>
@foreach($categories as $category)
<li class="dropdown">
<a href="/{{$category["parent"]["url"]}}" class="dropdown-toggle"
data-toggle="dropdown">{{$category["parent"]["adi"]}}
<b class="caret"></b></a>
<ul class="dropdown-menu columns-2">
<div class="row">
<div class="col-sm-3">
<ul class="multi-column-dropdown">
@foreach($category["children"] as $child)
<li><a href="/{{$child["url"]}}">{{$child["adi"]}}</a></li>
@endforeach
</ul>
</div>
</div>
</ul>
</li>
@endforeach
<li><a href="mail">İletişim</a></li>
</ul>
</div>