2016-07-22 98 views
0

我有以下的問題,我有兩個車型級別和類別:水平的關係類(),然後讓平班後:變化關係記錄Laravel5.2

$level->classes 

返回的數據被像這樣: { 「ID」:1, 「名」: 「1類」 }, { 「ID」:2, 「名」: 「2級」 } 現在我想放棄第2類,我試過但不起作用:

 $ids=[2]; 
     $classes=$level->classes; 

     $classes=$classes->whereIn('id',$ids); 

     $level->classes=$classes; 

有什麼建議嗎?

+0

你想刪除記錄或只返回$ ids數組中的結果嗎? –

+0

我想返回$ ids數組中的結果 –

+1

我想你可能需要在'whereIn'上使用' - > get()'。解釋「無效」意味着什麼是有幫助的。這個問題是什麼? –

回答

1

你也許可以使用急切的加載來完成你想要的東西。如果你只想要一個Level,你必須在')'之後和' - > get();'之前添加約束

https://laravel.com/docs/5.2/eloquent-relationships#eager-loading

$ids = [2]; 

$levels = Level::with(
    [ 
     'classes' => function ($query) use ($ids) { 
      $query->whereIn('id', $ids); 
     } 
    ] 
)->get(); 
+0

更具體一點,我有許多級別,每個級別有許多類,然後我有每個級別的ID都丟棄了?在我的情況下,這是行不通的 –

1

使用此:$level->classes()->whereIn('id', $ids)->get()

這將返回Relation類的一個實例,它具有作爲普通查詢生成器的所有方法。