2016-07-22 5 views
0

私は次のような問題を持って、私は2つのモデルレベルやクラスを持っています。レベルは関係クラス()を持って、そしてレベルのクラスになった後:変更関係レコード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

好きなものを達成するために熱心な読み込みを使用することができます。 1つのレベルだけが必要な場合は、 ')'の後と ' - > 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クラスのインスタンスを返します。

関連する問題