2016-04-06 18 views
1

Döngüler tablosum için 'favori' bir işleve sahibim. Bunu bir pivot tablo ile elde etmeye çalışıyorum. Ama şimdi ben tüm kullanıcılara çağrıştıran döngülere elverişli çağrıları aramak için en etkili yolu bulmaya çalışıyorum.Özetle pivot tabloda belirli bir özellikteki tüm öğeler nasıl alınır?

döngüler tablosu:

Schema::create('loops', function(Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name', 35); 
     $table->string('loop_path', 255); 
     $table->string('FK_user_id'); 
    }); 

kullanıcıları tablosu:

Schema::create('users', function(Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name'); 
     $table->string('password', 60); 
    }); 

sık tablosu:

Schema::create('favourites', function(Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('FK_user_id')->unsigned(); 
     $table->integer('FK_loop_id')->unsigned(); 
    }); 

Loop.php:

$loops = Loop::with('favourites')-> 
        with('user')->get(); 

    $favouritedLoops = array(); 

    foreach($loops as $loop) 
    { 
     //check if logged in user has favourited this 
     $user_favorites = Favourite::where('FK_user_id', '=', Auth::user()->id) 
      ->where('FK_loop_id', '=', $loop->id) 
      ->first(); 

     if ($user_favorites != null) 
     { 
      array_push($favouritedLoops, $loop); 
     } 

    } 

    return Response::json($favouritedLoops); 
+0

böyle demek istiyorsunuz? –

cevap

1

Ardından Yapabilirsin, User modelinde favouritedLoops yöntemini tanımlamak gerekir:

class Loop extends Model { 

    protected $table = 'loops'; 
    public $timestamps = true; 

    public function user() 
    { 
     return $this->belongsTo('App\User','FK_user_id','id'); 
    } 

    public function favourites() 
    { 
     return $this->belongsToMany('App\User', 'favourites', 'FK_loop_id', 'FK_user_id'); 
    } 

} 

Şu ana Bunu başarmak, ancak verimli görünmüyor nasıl Tüm tercihli döngülere kolayca erişin.

User.php

public function favouritedLoops() 
{ 
    return $this->belongsToMany('App\Loop', 'favourites', 'FK_user_id', 'FK_loop_id'); 
} 

ve nasıl görüneceğini şimdi dönmek: return Response::json(Auth::user()->favouritedLoops);

+0

Bunu denediğimde bu hatayı alıyorum: Sözdizimi hatası veya erişim ihlali: 1066 Benzersiz tablo/diğer ad: 'favoriler' (SQL: 'favourites'. *,' Favourites'.'FK_user_id' 'pivot_FK_user_id' olarak seçin, 'favourites', 'favourites', 'favourites'.'FK_loop_id' '' favourites'.'FK_user_id' = 1) –

+0

whoops’dan' favourites''nın 'favourites''' favorisinden 'pivot_FK_loop_id'') Kodumda bir hata oluştu, şimdi düzeltildi. –

İlgili konular