2016-07-02 12 views
0

Ich habe ein Problem mit meiner SammlungLaravel Sammlung funktioniert nicht richtig

$tasks = Bear::all(); 
$val = new Collection([]); 
foreach($tasks as $tas){ 
    $val ->push($tas->id); 
} 

$tasks1 = BearPic::whereIn('bear_id',$val)->get(); 
$val2 = new Collection([]); 
foreach($tasks1 as $tas){ 
    $val ->push($tas->bear_id); 
} 

mein Echo auf val ist

[10,11,12,10,10,11,11,12,12] 

Und auf tasks1 ist

[{ 
    "id": 1, 
    "bear_id": 10, 
    "picnic_id": 1, 
    "created_at": null, 
    "updated_at": null 
}, { 
    "id": 2, 
    "bear_id": 10, 
    "picnic_id": 2, 
    "created_at": null, 
    "updated_at": null 
}, { 
    "id": 3, 
    "bear_id": 11, 
    "picnic_id": 1, 
    "created_at": null, 
    "updated_at": null 
}, { 
    "id": 4, 
    "bear_id": 11, 
    "picnic_id": 2, 
    "created_at": null, 
    "updated_at": null 
}, { 
    "id": 5, 
    "bear_id": 12, 
    "picnic_id": 1, 
    "created_at": null, 
    "updated_at": null 
}, { 
    "id": 6, 
    "bear_id": 12, 
    "picnic_id": 2, 
    "created_at": null, 
    "updated_at": null 
}] 

die zweite Sammlung kehrt leer was könnte das Problem sein? Ich bin ziemlich neu zu Laravel das ist ein Tutorial

Antwort

0

Die zweite Sammlung val2 leer ist einfach, weil Sie die Werte val das heißt die erste Sammlung statt val2 drängen.

Wenn Sie darauf bestehen, keine Joins zu verwenden und an Collections zu arbeiten, ist pluck in der Tat eine schnellere Lösung.

$tasks = Bear::all(); 
$val = $tasks->pluck('id'); 

$tasks1 = BearPic::whereIn('bear_id', $val)->get(); 
$val2 = $tasks2->pluck('bear_id'); 
0

Wenn ich richtig verstehe, wollten Sie alle id Werte von $tasks1 Sammlung auf $val2 setzen, bin ich richtig? Wenn ja, dann könnte man einfach so tun:

$tasks1 = BearPic::whereIn('bear_id',$val)->get(); 

$val2 = $tasks1->pluck('id');