国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Durchsuchen Sie Beitr?ge nach Tags
P粉323050780
P粉323050780 2024-04-03 22:38:54
0
1
886

Ich muss Beitr?ge nach Tags anzeigen. Meine L?sung funktioniert für ein einzelnes Etikett wie folgt:

Route:

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

Post-Model-Filter:

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-Methodenindex:

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

Dieser Code gilt für die folgende URL: ?http://127.0.0.1:8000/posts/?tag=test“. Aber ich muss eine M?glichkeit finden, nach Beitr?gen mit mehr Tags zu suchen, ich m?chte beispielsweise Beitr?ge mit den Tags ?test“ und ?unit“ finden. Dazu m?chte ich eine URL wie diese verwenden: ?http://127.0.0.1:8000/posts/?tag=test&unit“. Ich stecke fest, weil ich dachte, ?request(['tag'])“ würde ?test&unit“ zurückgeben, aber es gibt nur ?test“ zurück. Ist es irgendwie m?glich, das Tag ?unit“ aus dieser Anfrage zu erhalten?

P粉323050780
P粉323050780

Antworte allen(1)
P粉596161915

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

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

在后端,當(dāng)你訪問(wèn) request()->input('tags') 時(shí),你會(huì)得到以下數(shù)組:

$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', []) 訪問(wèn) ?tags[]=...&tags[]=...,如果未提供則為空數(shù)組。
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage