コレクションでLaravel contains
メソッドを使用しています https://laravel.com/docs/5.3/collections#method-contains 。しかし、私にはうまくいきません。
_foreach ($this->options as $option) {
if($options->contains($option->id)) {
dd('test');
}
}
_
dd($options);
は次のようになります。
_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" => []
]
]
]
}
_
dd($option->id);
の結果は_10
_です。
何が間違っているのでしょうか?または、より良い方法がありますか?
キー/値のペアをcontainsメソッドに渡す必要があります。このメソッドは、指定されたペアがコレクションに存在するかどうかを判断します。
この方法で contains()
メソッドを使用する必要があります。
foreach ($this->options as $option) {
// Pass key inside contains method
if($option->contains('id', $option->id)) {
dd('test');
}
}
お役に立てれば
foreach ($this->options as $option) {
if(!$options->flatten(1)->where('id',$option->id)->isEmpty()) {
dd('test');
}
}