Keep in mind I have minimal SQL experience, so I may be doing it all wrong.
I'm trying to set up search for a table but simply searching for the string a user enters is not ideal because though something may come up for "steve", if a user types "steve jobs story", nothing will match if that doesn't exist, as it'll be looking for that whole string instead of looking for each word respectively.
I tried to break it down by exploding the string into an array and then imploding that and separating it with %'s, so a search like "steve jobs story" would be "steve%jobs%story", and with my query it would be "%steve%jobs%story%". When I try searching this, I get no error but the query finds nothing, whereas when I just type one word it works, so I'm guessing what I'm trying to do isn't allowed.
Can someone point me in the right direction? Here is my controller/model:
// Controller
$query = $request->get('q');
$explodedQuery = explode(" ", $query);
$newQuery = implode("%", $explodedQuery);
$articles = Article::isLikeTitle($newQuery)
->isLikeBody($newQuery)
->latest('published_at')
->published()
->paginate(10);
// Model
public function scopeIsLikeTitle($query, $q)
{
return $query->where('title', 'LIKE', "%$q%");
}
public function scopeIsLikeBody($query, $q)
{
return $query->where('body', 'LIKE', "%$q%");
}
from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/21ihCH7
via IFTTT
Aucun commentaire:
Enregistrer un commentaire