php - updateorcreate - with() laravel




Eloquente-múltiples DONDE ME GUSTA condiciones (2)

Actualmente estoy intentando implementar una búsqueda en mi db para palabras clave. Por lo tanto, dividí una cadena separada por una coma, así que obtuve una matriz que contenía una cantidad variable de elementos (una palabra clave).

Sé que puedo usar una construcción elocuente como esa:

$products = Product::where([['keywords', 'LIKE', %samsung%], [keywords, 'LIKE', 's7']])->paginate(15); 

para encontrar un producto con las palabras clave samsung,galaxy,s7 .

Ahora necesito esto, pero generado automáticamente para un número variable de partes de búsqueda, así que para cada palabra clave en el arreglo necesito agregar una ['keywords', 'LIKE', '...'] ...

¿Cómo puedo hacer esto con Laravels Eloquent?


¿No es solo para generar la matriz? ¿O estoy malentendiendo la pregunta?

<?php

$keys = ['samsung', 'lg', 'sony', 'nokia', 'apple'];
$keywords = [];
foreach($keys as $key){
    $keywords[] = ['keywords', 'LIKE', '%'.$key.'%'];
}

$products = Product::where($keywords)->paginate(15);

Puedes hacerlo:

$query = "Samsung galaxy S7"; // Or whatever the query is

$words = preg_split("/[ ,.]/",$query); //Split on space comma or dot. Maybe need more?

$queries =  array_map(function ($word) { 
       return [ "keywords", "LIKE", "%$word%" ]; 
 }, $words); //Transform single words to array of queries

$products = Product::where($queries)->paginate(15); 

Compruebe cómo funciona la primera parte del código en: https://eval.in/730772





laravel-eloquent