jeudi 8 février 2018

Laravel join with LIKE CONCAT

I have a simple search in my shop:

public function search($request $request)
{
        return Catalog::where('title', 'like', '%'.$request->searchQuery.'%')
            ->orderBy('id', 'desc')
            ->paginate(50);
}

This is worked!

But people are looking for goods so: Pump BOSCH. And search result is null.

Because I changed my select:

public function search($request $request)
{
    $searchQ = preg_split('/\s+/', $request->searchQuery, -1, PREG_SPLIT_NO_EMPTY);
    return Catalog::where(function ($q) use ($searchQ) {
               foreach ($searchQ as $value) {
                   $q->orWhere('title', 'like', "%{$value}%");
               }
           })
           ->orderBy('id', 'desc')
           ->paginate(50);
}

And this is worked), and show all Pumps!

But i want show only one Pump bosch.

My DB table manufactory:

|  id  | title  |
| :--: | :----- |
|   1  |  AlKO  |
|   2  |  BOSCH |

AND catalogs, where m_id is id from table manufactory:

|  id  |  m_id | title |     url    |
| :--: | :---: | :---- | :--------- |
|   1  |   1   |  pump | pump-alko  |
|   2  |   2   |  pump | pump-bosch |

How do I change the MySQL search query (adding LEFT JOIN and CONCAT) to find Pump bosch?

Thanks, and sory my English!



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire