J'ai cette erreur:

in_array() expects parameter 2 to be array, object given (View: C:\wamp64\www\partie2-exo\resources\views\index.blade.php)

Voici la ligne en question:

{!! link_to_route('poll.edit', 'Modifier', [$poll->id], ['class' => 'btn btn-warning btn-block' . (in_array($poll->question, $polls_voted)? ' disabled' : '')]) !!}

Cette erreur provient du PollRepository:

$polls_voted = Poll::has('answers')->get();

Les valeurs de "polls_voted" doivent être les questions pour lesquelles il y a eu des votes.

0
Yannick Allegre 27 janv. 2019 à 16:44

3 réponses

Meilleure réponse

$polls_voted dans votre cas est une Collection. Une solution simple pour cela serait de pluck() toutes les questions et de les convertir en un tableau avec toArray().

{!! link_to_route('poll.edit', 'Modifier', [$poll->id], ['class' => 'btn btn-warning btn-block' . (in_array($poll->question, $polls_voted->pluck('question')->toArray()) ? ' disabled' : '')]) !!}
2
Mozammil 27 janv. 2019 à 13:49

Lorsque vous utilisez Eloquent Builder, vous obtenez un objet. Ce n'est pas un tableau, donc in_array ne fonctionnera pas. Au lieu de cela, vous pouvez utiliser toArray() pour le transformer en tableau. Comme ces 2 exemples

$user = App\User::with('roles')->first();

return $user->toArray();


$users = App\User::all();

return $users->toArray();

https://laravel.com/docs/5.7/eloquent-serialization

0
Koen Hollander 27 janv. 2019 à 13:48

IN_ARRAY() accepte le paramètre 2 comme tableau. Le tableau passé doit être non associatif comme celui-ci $arr = ["one","two","three"]

0
Waqar 27 janv. 2019 à 13:47