亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

按標(biāo)籤搜尋貼文
P粉323050780
P粉323050780 2024-04-03 22:38:54
0
1
883

我需要按標(biāo)籤顯示貼文。我的解決方案適用於單一標(biāo)籤,如下所示:

路線:

Route::get('/posts',
   [PostController::class, 'index'])->middleware('auth');

後模型篩選器:

public function scopeFilter($query, array $filters)
{
    if ($filters['tag'] ?? false) {
        $tagId = Tag::where('name', $filters['tag'])->first()->id;
        $query->whereHas('tags', function($q) use ($tagId) {
                $q->where('tag_id', $tagId);
        });
    }
}

PostController 的方法索引:

public function index()
{
    return view('posts', [
        'posts' => Post::latest()->filter(request(['tag']))->get()
    ]);
}

此程式碼適用於下列網(wǎng)址:「http://127.0.0.1:8000/posts/?tag=test」。但我需要找到一種方法來(lái)搜尋具有更多標(biāo)籤的帖子,例如我想尋找?guī)в小皌est”和“unit”標(biāo)籤的帖子。為此,我想使用以下網(wǎng)址:「http://127.0.0.1:8000/posts/?tag=test&unit」。我卡住了,因?yàn)槲艺J(rèn)為“request(['tag'])”將返回“test&unit”,但它只返回“test”。是否有可能以某種方式從此請(qǐng)求中獲取“unit”標(biāo)籤?

P粉323050780
P粉323050780

全部回覆(1)
P粉596161915

使用查詢字串的 GET 請(qǐng)求可以接受多個(gè)參數(shù)。而不是?tag=test&unit (無(wú)論如何都不會(huì)真正起作用,因?yàn)?code>&unit 將被解析為$request->input('unit'),並且將是null& 是保留字元),您可以發(fā)送為:

http://127.0.0.1:8000/posts?tags[]=test&tags[]=unit

在後端,當(dāng)你存取 request()->input('tags') 時(shí),你會(huì)得到以下陣列:

$tags = request()->input('tags'); // ['test', 'unit']

所以,把它們放在一起:

// ScopeFilter method on your `Post` Model
public function scopeFilter($query, array $tagNames) {
  if (!empty($tagNames)) {
    $tagIds = Tag::whereIn('name', $tagNames)->pluck('id');

    return $query->whereHas('tags', function($subQuery) use ($tagIds) {
      return $subQuery->whereIn('tags.id', $tagIds);
    });

    // Alternative without `$tagIds`, using `$tagNames` directly
    // return $query->whereHas('tags', function($subQuery) use ($tagNames) {
    //   return $subQuery->whereIn('tags.name', $tagNames);
    // });
  }

  return $query;
}

// Usage
public function index() {
  return view('posts', [
    'posts' => Post::latest()->filter(request()->input('tags', []))->get()
  ]);
}
  • 調(diào)整查詢以使用 whereIn() 處理多個(gè)值
  • 使用request()->input('tags', []) 存取?tags[]=...&tags[]=...,如果未提供則為空數(shù)組。
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板