/ / Comment sauter une ligne avec un fichier existe dans laravel - laravel, recherche, éloquent

Comment sauter une ligne avec le fichier existe condition dans laravel - laravel, recherche, éloquent

C'est pour une requête de recherche basée sur de nombreux champs d'entrée, je fais si des instructions à l'intérieur de la requête basées sur les entrées, par exemple:

$query = Model::all();

if($field = Input::get("field"))
$query->where("column_name", $field);

mais ce que je veux faire aussi, c'est une condition pour sauter une ligne s'il n'y a pas d'image avec un nom de cet identifiant de ligne, comme ceci:

if( file_exists("/img/".$this_query->id) )
$query->skip();

Réponses:

1 pour la réponse № 1

Option 1: consisterait à créer un tableau des noms de fichiers, puis à utiliser le whereIn méthode du générateur de requêtes, qui vérifie l'occurrence d'une valeur de colonne dans un tableau.

$query = Model::query();

$filenames = scandir("/img");

// the following excludes any id"s not in the $filenames array
$query = $query->whereIn("id", $filenames);

Option 2: exécutez la requête, puis filter la Collection résultante à Laravel.

$query = Model::query();
// ... then build up your query

// the following gets the query results and then filters them out
$collection = $query->get()->filter( function($item) {
return file_exists("/img/".$item->id);
}

Raisonnement: la base de données ne peut pas vérifier le système de fichiers pendant son traitement; vous devez donc (Option 1) lui fournir une liste à partir de laquelle vérifier, ou (Option 2) faire la vérification après toi get() les résultats de la requête.