首页 > 解决方案 > 如何创建具有关系的搜索系统?

问题描述

我会尽力解释。例如,我有一张带有广告的桌子,例如汽车。我有如下关系表:品牌、型号。这意味着在 adv 表中可以输入

id|make_id|model_id 1 | 23 | 33

make_id 是现代,型号 id 是 Excel 输入搜索关键字时我有搜索框

如果我输入现代

// create search model
$adv = Advertisement::query();

// status activate 64
$adv->where('user_id', Auth()->user()->id);

// make
$adv->whereHas('make', function($query) use($request) {
    $query->where('name', 'like', '%' . $request->search_adv . '%');
});

dd($adv->get());

非常适合制作。但是当我做

// 创建搜索模型 $adv = Advertisement::query();

// status activate 64
$adv->Where('user_id', Auth()->user()->id);

// make
$adv->whereHas('make', function($query) use($request) {
    $query->orWhere('name', 'like', '%' . $request->search_adv . '%');
});

// model
$adv->whereHas('model', function($query) use($request) {
    $query->orWhere('name', 'like', '%' . $request->search_adv . '%');
});

dd($adv->get());

应该怎么做?

标签: laraveleloquent

解决方案


// status activate 64
$adv->Where('user_id', Auth()->user()->id);

// make
$adv->whereHas('make', function($query) use($request) {
    $query->where('name', 'like', '%' . $request->search_adv . '%');
});

// model
$adv->orWhereHas('model', function($query) use($request) {
    $query->where('name', 'like', '%' . $request->search_adv . '%');
});

dd($adv->get());

推荐阅读