Merhaba,
Sınırsız kategori ve buna bağlı alt kategori seçtirme özelliğim var.
Edit sayfasına bağlı olduğu "parent" kategorisini;
<select class="form-select select2" id="parent_id" name="parent_id">
<option value=""></option>
@foreach($categories as $cat)
<option value="{{ $category->id }}" {{ ($cat->id == $category->parent_id ? 'selected' : '') }}>{{ getAllCategoryTree($cat, $cat->name) }}</option>
@endforeach
</select>
şeklinde seçtirebiliyorum fakat düzenlenmek istenen kategori de bu listede bulunuyor. Doğal olarak kendi kendisinin ana kategorisi olamayacağı için burada gözükmemesi gerekiyor. Düzenlenen kategori "id" hariç diyerek nasıl bir eloquent where koşulu yazılabilir ?
Düzenleme;
$categories = Category::where('id', '!=', $id)->get();
Bu şekilde yaptım umarım sağlıklıdır 🙂 Fakat şöyle bir sorun daha var. Ben sadece gelen "id"'li kategoriyi eklememiş oldum. Fakat bu bir ana kategoriyse ve alt kategorileri de listeleniyorsa ? Eğer "parent_id" örneğin sıfır (0) ise bunun alt kategorileri de select listesinde olmamalı.
public function edit($id)
{
$category = Category::find($id);
$categories = Category::where('id', '!=', $id)->when($category->parent_id == 0, function ($query) use ($id) {
foreach(Category::where('id', '!=', $id)->get() as $cat) {
$query->where('parent_id', '!=', $cat->id);
}
})->get();
return view('category::admin.edit', compact('categories', 'category'));
}
gibi bir şey denedim fakat olmadı 🙂