J'utilise la méthode Laravel contains
sur une collection https://laravel.com/docs/5.3/collections#method-contains . Mais ça ne marche pas pour moi.
foreach ($this->options as $option) {
if($options->contains($option->id)) {
dd('test');
}
}
dd($options);
ressemble à ceci:
Collection {#390
#items: array:1 [
0 => array:3 [
0 => array:7 [
"id" => 10
"slug" => "test"
"name" => "test"
"poll_id" => 4
"created_at" => "2016-11-12 20:42:42"
"updated_at" => "2016-11-12 20:42:42"
"votes" => []
]
1 => array:7 [
"id" => 11
"slug" => "test-1"
"name" => "test"
"poll_id" => 4
"created_at" => "2016-11-12 20:42:42"
"updated_at" => "2016-11-12 20:42:42"
"votes" => []
]
2 => array:7 [
"id" => 12
"slug" => "test-2"
"name" => "test"
"poll_id" => 4
"created_at" => "2016-11-12 20:42:42"
"updated_at" => "2016-11-12 20:42:42"
"votes" => []
]
]
]
}
Le résultat de dd($option->id);
est 10
.
Qu'est-ce qui ne va pas? Ou existe-t-il une meilleure façon?
Vous devez transmettre une paire clé/valeur à la méthode contains, qui déterminera si la paire donnée existe dans la collection.
Vous devez utiliser la méthode contains()
de cette manière:
foreach ($this->options as $option) {
// Pass key inside contains method
if($option->contains('id', $option->id)) {
dd('test');
}
}
J'espère que cela t'aides
Utilisez ce qui suit, qui indique Laravel que vous souhaitez faire correspondre l'id):
$options->contains('id', $option->id);
foreach ($this->options as $option) {
if(!$options->flatten(1)->where('id',$option->id)->isEmpty()) {
dd('test');
}
}