Arkadaşlar merhaba,
Laravel'de Elequent Parent- Child ilişkisi hakkında kafamı karıştıran bir konu hakkında sizlere danışmak istedim.
Category ve SubCategory olarak 2 modelimiz var. Aralarında One-To-Many tanımlı.
app/Models/Category;
public function subCategories()
{
return $this->hasMany(SubCategory::class);
}
app/Models/SubCategory;
public function category()
{
return $this->belongsTo(Category::class);
}
Örneğin SubCategory deki verileri Eager Loading ile çekmek istiyorum.
Controller tarafında;
$sub_categories = SubCategory::with('category')->orderBy('order', 'ASC')->get();
Ve standart bir DataTables içerisinde bunları listeliyorum;
<tbody>
@foreach($sub_categories as $sub_category)
<tr>
<td>{{$loop->iteration}}</td>
<td><img width="100" src="{{asset('storage/'.$sub_category->icon)}}"></td>
<td>{{ $sub_category->name }}</td>
<td>{{ $sub_category->slug }}</td>
<td>{{ $sub_category->category->name }}</td>
</tr>
@endforeach
</tbody>
Örneği uzatmamak için tablonun belli kısmını aldım. Şimdi burada $sub_category->category->name ile parent tablomdan veriyi yakaladım.
Buraya kadar sıkıntı yok. Sıkıntı yaşadığım nokta ise şurası.
Parent Category tablomdan verileri listelemek istersem @foreach($categories as $category) gibi ve tablonun içinde sub_categories tablomdan da bazı verileri çekmek istediğimde bunu başaramıyorum.
$categories= Category::with('subCategories')->orderBy('order', 'ASC')->get();
<tbody>
@foreach($categories as $category)
<tr>
<td>{{$loop->iteration}}</td>
<td class="sortable"><img width="100" src="{{asset('storage/'.$category->icon)}}"></td>
<td>{{$category->name}}</td>
<td>{{$category->slug}}</td>
</tr>
@endforeach
</tbody>
Burada bir kaç tane daha <td> olsaydı ve içerisinde subCategories relationım ile bazı verileri çekmek isteseydim nasıl yapmam gerekirdi? td'nin birinde tekrar bir foreach loop yapmayı denedim bu seferde bütün verileri basıyor tek getirmiyor.
<tbody>
@foreach($categories as $category)
<tr>
<td>{{$loop->iteration}}</td>
<td><img width="100" src="{{asset('storage/'.$category->icon)}}"></td>
<td>{{$category->name}}</td>
<td>{{$category->slug}}</td>
@foreach($category->subCategories as $subcategory)
<td>{{$subcategory->exampleData}}</td>
@endforeach
</tr>
@endforeach
</tbody>
gibi...