首页 > 解决方案 > Laravel - 获取数据中关系问题中的搜索过滤器

问题描述

试图从表“mobiles”中获取数据,以及它在 Stock 中的相关条目。虽然我的搜索关键字是手机型号,请参阅下面的手机表

在此处输入图像描述

和相关的表“股票”也在下面

在此处输入图像描述

手机型号为:

class Mobile extends Model
{
    public function company(){
        return $this->hasMany(Company::class);
    }
    public function stocks(){
        return $this->hasMany(Stock::class);
    }
}

库存型号为:

class Stock extends Model
{
    public function company(){
        return $this->belongsTo(Company::class, 'company_id');
    }
    public function mobiles(){
        return $this->belongsTo(Mobile::class, 'model_id');
    }
}

Stock的指数方法是:

public function index(Request $request)
    {
      $request->session()->put('search', $request
        ->has('search') ? $request->get('search') : ($request->session()
          ->has('search') ? $request->session()->get('search') : ''));

      $request->session()->put('field', $request
        ->has('field') ? $request->get('field') : ($request->session()
          ->has('field') ? $request->session()->get('field') : 'model_id'));

      $request->session()->put('sort', $request
        ->has('sort') ? $request->get('sort') : ($request->session()
          ->has('sort') ? $request->session()->get('sort') : 'asc'));

      $stocks = new Stock();

      $stocks = $stocks->where('model_id', 'like', '%' . $request->session()->get('search') . '%')
      ->orderBy($request->session()->get('field'), $request->session()->get('sort'))
      ->paginate(5);

      if ($request->ajax()) {
        return view('pages.stock.index_stock', compact('stocks'));
      } else {
        return view('pages.stock.ajax', compact('stocks'));
      }      
    }

问题是我可以使用模型 ID 进行搜索,因为搜索过滤器设置在“stock”表的“model_id”列上。我如何通过编写表“mobiles”中存在的手机型号名称进行搜索,在搜索型号后,它应该显示与搜索到的手机型号相关的完整信息。

提前致谢。

标签: laravellaravel-5eloquentlaravel-5.2relationship

解决方案


推荐阅读