laravel 7.14 在使用关系搜索数据表后为产品构建链接
Posted
技术标签:
【中文标题】laravel 7.14 在使用关系搜索数据表后为产品构建链接【英文标题】:laravel 7.14 build link for product after searching datatable with relation 【发布时间】:2020-10-03 09:01:22 【问题描述】:我有一个 laravel 7.14 应用程序。
我正在尝试根据品牌名称 = 查询获取搜索结果。
问题在于建立链接以显示单个产品。它需要品牌信息而不是产品信息。当我用品牌名称搜索时,我得到了想要的结果,但是查看单个产品链接会获取品牌信息而不是产品信息。如果我从品牌表中删除 slug,我会在显示结果时出错。
我的产品表有brand_id,它标记了产品中的品牌。在品牌表中,我有“名称”和“蛞蝓”。
产品领域:
'image',
'title',
'slug',
'description',
'brand_id',
'category_id',
品牌领域:
'name',
'slug',
这是我在 ProductsController 中的搜索:
public function search(Request $request)
$validator = Validator::make($request->all(), [
'query' => 'required|min:3',
]);
if ($validator->fails())
return back()->with('toast_error', 'Please enter at least 6 character');
$query = $request->input('query');
$products = Product::where('title', 'like', "%$query%")
->orWhere('molecules', 'like', "%$query%")
->orWhere('text', 'like', "%$query%")
->join('brands', 'brands.id', '=', 'brand_id')
->orWhere('name', 'like', "%$query%")->paginate(10);
// Search with paginate
// $products = Product::search("%$query%")
// ->paginate(20);
$categories = Category::all();
$brands = Brand::all();
return view('products.search')->with([
'products' => $products,
'categories'=> $categories,
'brands' => $brands,
]);
【问题讨论】:
【参考方案1】:只需为查询中的 slug 列之一提供别名。例如
$products = Product::select('products.*', 'brands.name', 'brands.slug as brand_slug')
->where('title', 'like', "%$query%")
->orWhere('molecules', 'like', "%$query%")
->orWhere('text', 'like', "%$query%")
->join('brands', 'brands.id', '=', 'brand_id')
->orWhere('name', 'like', "%$query%")->paginate(10);
【讨论】:
以上是关于laravel 7.14 在使用关系搜索数据表后为产品构建链接的主要内容,如果未能解决你的问题,请参考以下文章