Dynami c Зависимый раскрывающийся список в Laravel - PullRequest
0 голосов
/ 18 марта 2020

У меня есть 3 разные таблицы в базе данных с именем productdetails , category & subcategorydetails , а также у меня есть 3 разных контроллера ProductdetailContoller , CategoryController & SubcategorydetailController соответственно. В настоящее время я работаю над 'view' SubcategorydetailContoller, который является subcategory.blade. php

`

            @csrf
            <div class="form-group">

              <select name="productid">


                <option value="select product">
                @foreach ($productdetail as $row)
                  <option value="{{$row->ProductID}}">
                    {{$row->ProductType}}
                  </option>
                  @endforeach
                  </option>
              </select>

              <select name="categoryid">


                <option value="select category">
                @foreach ($category as $row)
                  <option value="{{$row->CategoryID}}">
                    {{$row->CategoryType}}

                  </option>
                  @endforeach
                  </option>
              </select>

              <input type="text" name="subcategory"/>

              <input type="submit" value="add category"/>
            </div>
          </form>
        </div>`

Теперь я хочу сделать динамически зависимое отбрасывание списки, но до этого я не смог отобразить данные второй таблицы во втором раскрывающемся списке.

Вот что я делаю в своем контроллере:

namespace App\Http\Controllers;
use App\productdetail;
use App\category;
use App\subcategorydetail;
use Illuminate\Http\Request;

class SubcategorydetailController extends Controller
{

    public function index()
    {  

       $productdetails=productdetail::all();
        return view('subcategory')->with('productdetail',$productdetails);

        //i wrote this in another class but i still didn't get the desired output
        $category=category::all();
        return view('subcategory')->with('category', $category);

    }



    public function create()
    {

    }


    public function store(Request $request)
    {
        $data=new subcategorydetail();
        $data->SubCatType=$request->subcategory;
        $data->CategoryID=$request->categoryid;
        $data->save();
        return dd($data);
        //return view('subcategory');
    }

Обновление 1: теперь я получаю данные во втором раскрывающемся списке с помощью этого кода

 public function index()
    {

        $productdetail=productdetail::all();

        $category=category::all();

            /*$category=category::where(DB::table('categories')
            ->join('productdetails','categories.ProductID','=','productdetails.ProductID')
                ->select('categories.CategoryType')
            //->whereRaw('categories.ProductID="1"')
            ->get());*/
            return view('subcategory')->with([
                'productdetail'=>$productdetail,
                'category' => $category,

        ]);


    }

Теперь я не понимаю, где я делаю ошибку, когда присоединяюсь и устанавливаю логи c, что когда Я выбрал указанный продукт c в первом раскрывающемся списке, тогда во втором раскрывающемся списке будут отображаться только категории этого выбранного продукта. ??

Обновление 2:

public function index(Request $request)
    {

        $productdetail=productdetail::all();

        $data=new productdetail();
        $data=new productdetail();
        $data->ProductID=$request->productid;
        $category=category::where(DB::table('categories')
            ->join('productdetails','categories.ProductID','=','productdetails.ProductID')
             ->select('categories.CategoryType')
            ->whereRaw('categories.ProductID='.$data.'')
            ->get());

        return view('subcategory')->with([
            'productdetail'=>$productdetail,
            'category' => $category,

        ]);


    }

Приведенный выше код показывает эта ошибка:

SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL имеется ошибка; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с '"ProductID"?} "в строке 1 (SQL: выберите categories. CategoryType из categories внутреннее объединение productdetails в categories. ProductID = productdetails. ProductID где Categories.ProductID = {"ProductID": null})

1 Ответ

0 голосов
/ 18 марта 2020

HTML не предоставляет такую ​​функцию, которая указана в ваших комментариях.

Что вы можете сделать, это примерно так:

в вашем файле маршрутов

Route::get('{productDetail}', 'SubcategorydetailController@index');

на вашем контроллере

 public function index()
    {  

       $productdetails=productdetail::all();

       $category=category::where(...); // insert the logic to return only the categories that has anything to do with this product detail
        return view('subcategory')->with([
          'category' => $category,
          'productDetail' => $productDetails,
        ]);

    }
...