• 02-10-2022, 23:09:57
    #1
    Merhabalar

    Araç marka modellerinin olduğu 3 adet tablom var. Kullanıcı kayıt oluştururken marka model seçerek kayıt oluşturuyor. Benim yapmak istediğim kullanıcı X markayı seçtiği zaman o markaya bağlı modeller gelmesi ve kullanıcı gelen modellerden birini seçtikten sonra o modele bağlı alt modellerin gelmesini istiyorum. Bunları nasıl veritabanından seçebilirim ve ön yüzde kullanıcıya nasıl gösterebilirim. Bana en sade şekli ile yardımcı olur musunuz?
  • 03-10-2022, 11:54:26
    #2
    Merhaba,

    Modellerin AracMarka, AracModel, AracAltModel oldugunu varsayiyorum.

    AracMarka modeline relationship tanimlarsin;

    public function models()
    {
    return $this->hasMany(AracModel::class); // arac_model tablonda arac_marka_id olusturmalisin, bigInt(1)
    }
    AracModel modelin icin alt modellere ulasmak icin;

    public function altModels()
    {
    return $this->hasMany(AracAltModel::class); // yine ayni sekilde arac_alt_model tablonda arac_model_id olusturmalisin, bigInt(1)
    }
    View'de kullaniciya gosterirken veya controllerde kayita eristikten sonra, ornegin;

    public function index(AracMarka $aracmarka, Request $request)
    {
     return $aracmarka->models; // markaya ait modellerin gelir
    }
    Controllerdan view'e gonderirken;

    public function index(AracMarka $aracmarka, Request $request)
    {
     return view('index', ['aracmarka' =>  $aracmarka]);
    }
    Route:
    Route::get('/aracmarka/{aracmarka}', [AracMarkaController::class, 'index'])->name('aracmarka.index');
    View'den $aracmarka->models olarak ulastiginda o markaya ait modelleri gorursun. Foreach veya forelse ile dondurursun blade view'da. Ayni sekilde Model'deki childrene (alt_modellere) bu sekilde ulasabilirsin. Ters relationship yapmak istersen (mesela model'den marka'ya ulasmak istiyorsun);

    AracModel modeline;

    public function marka()
    {
     return belongsTo(AracMarka::class);
    }
    Daha fazla bilgi sahibi olmak istersen relationship dokumantasyonunu inceleyebilirsin: https://laravel.com/docs/9.x/eloquent-relationships