J'ai une table de publication comme celle-ci:
Post::where(['title'=>$request->title])->with('category')->paginate(10);
et c'est le tableau des catégories
public function category() { return $this->belongsTo(Category::class, 'category_id', 'id'); }
c'est la relation entre ces deux qui est à l'intérieur du modèle post:
id | category_title
Je veux obtenir l'enregistrement de la table de publication où category_title ou post_title correspond au mot-clé saisi par l'utilisateur.
Je récupère des données comme:
id | post_title | category_id
mais ici, il ne récupère que le titre du message, mais je veux aussi qu'il le recherche dans le titre de la catégorie.
Toute aide est grandement appréciée.
4 Réponses :
Post::->where('title', 'like', '%'.$request->title.'%')->with(['category' => function($query) use ($request){ $query->where('category_title', 'like', '%'.$request->title.'%'); }])->paginate(10);
Bien que ce code puisse résoudre le problème, une bonne réponse devrait expliquer ce que fait le code et comment il aide.
Essaye ça:-
$keyword = $request->input('title'); Post::with('category') ->where('title', 'like','%'.$keyword.'%') ->orWhere('category.category_title','like','%'.$keyword.'%') ->paginate(10);
vous devez utiliser orWhereHas :
Post::where(['title' => $request->title])-> orWhereHas('category',function ($query)use($request){ $query->where('category_title',$request->title); })->with('category')-> paginate(10);
Bien que ce code puisse résoudre le problème, une bonne réponse devrait expliquer ce que fait le code et comment il aide.
une réponse sans `` quoi et comment '' est une réponse incomplète, mais ce n'est pas une mauvaise réponse
Post::where('title', 'like', '%'.$request->title.'%')->with(['category' => function($query) use ($request){ $query->where('category_title', 'like', '%'.$request->title.'%'); }])->paginate(10); In the above code snippet We are fetching the title which matches with the request with(['category' => function($query) use ($request): laravel matches the result into relationship using closure function which accepts one parameter $request and again we are filtering the relationship with this parameter $request->title which is coming through Request $request You can use the code above or you can make a scope for reusability.