Besoin d'aide ?

clause wherein dans query sql

  • Avatar de joflll
    Membre depuis :
    28/02/2019
    Messages :
    3

    Bonjour,
    Je suis sous Laravel 5 et j'essaie d'intégrer une clause wherein à une query mysql:

    $sections = explode(',', '1,2,3');

    $results = DB::table("test")
    ->select('test.')
    ->selectRaw("
    6371
    acos(
    round(
    (((cos( radians( ? ) )
    cos( radians( Latitude ) ))

    cos( radians( ? ) - radians(Longitude) )) +
    (sin( radians( ? ) ) *
    sin( radians( Latitude ) ) )
    ), 10)
    ) AS Distance")
    ->whereIn('type', [$sections])
    ->having("Distance", "<", "?")
    ->orderBy("Distance")
    ->setBindings([$lat, $lng, $lat, $radius])
    ->get();

    Ca marche très bien quand j'enlève la clause wherein mais dès que je la met j'ai pas de message d'erreur mais plus aucun résultat alors que j'ai des correspondances sur les type demandés.
    Sur la bdd, type est un unsigned int.

    Merci à vous

  • Avatar de MaitrePylos
    Membre depuis :
    27/05/2013
    Messages :
    264

    Bonjour,
    $sections est déjà un tableau suite à l'application de explode.
    du coup vous passez un tableau de tableau

    ->whereIn('type', [$sections])

    Juste la variable devrais donner un meilleur résultat

    ->whereIn('type', $sections)

  • Avatar de cbaconnier
    Membre depuis :
    08/03/2019
    Messages :
    1

    Bonjour,

    Pour calculer la distance / distance sphérique dans une base de donnée il existe les champs de type spatiaux depuis MySQL 5.6+ il me semble.

    Il y a la librairie grimzy/laravel-mysql-spatial pour Laravel qui exploite les fonctions native et donneront de bien meilleurs performances.

Vous ne pouvez pas répondre à ce sujet.