2016-08-22 17 views
1

このエラーを修正する方法は、3つのテーブルのプロファイル、能力とcompetences_profilがあります。 私は各プロファイルの能力を回復したい、私はクエリビルダーと雄弁と能力を持つプロファイルを取得することができます。しかし、私は、各プロフィールの能力を盗んしたいとき、私は次のエラーを取得:未定義のプロパティ:$はstdClassを::

controller : 
     $competences = \App\Competence::All(); 

    $profils = \DB::table('profils') 
      ->select(['profils.*']); 

     if($request->has('varcate')){ 
       $profils->join('fonctions','profils.fonctions_id','=','fonctions.id');  
       $profils->join('categos','fonctions.categos_id','=','categos.id'); 
       $profils->where('categos.id','=',$request->input('varcate')); 

     } 

     if($request->has('varfonction')){ 
      if(!$request->has('varcate')){ 
       $profils->join('fonctions','profils.fonctions_id','=','fonctions.id');  
      } 

      $profils->where('fonctions.id','=',$request->input('varfonction')); 
     } 

     if($request->has('varstate')){ 
       $profils->join('citys','profils.citys_id','=','citys.id');  
       $profils->join('states','citys.state_id','=','states.id'); 
       $profils->where('states.id','=',$request->input('varstate')); 

     } 

    if($request->has('varcity')){ 
      if(!$request->has('varstate')){ 
       $profils->join('citys','profils.citys_id','=','citys.id');  
      } 

      $profils->where('citys.id','=',$request->input('varcity')); 
     } 

     $profils = $profils->paginate(30); 

モデル: 能力 パブリック関数profils() { リターンます$ this-> belongsToMany ( 'App \ Profils'); }

profils 
     public function competences() 
    { 
     return $this->belongsToMany('App\Competence'); 
    } 

view : 
@foreach($profils as $profil) 
     @foreach($profil->competences as $competence) 
      {{$competence->titre}} 
     @endforeach 
@endforeach 

答えて

0

チェックアウトrelationship docs。あなたはモデル内の関数との関係を記述し、->with('competences')を使用してコントローラ内でそれらを検索します。それであなたはあなたの$ profilsオブジェクトにそれらの(関係)を持っています。

PROFILモデルの内部ので、あなたがhasManyThrough関係を使用しているようです:

/** 
* Get all of the competences for profile. 
*/ 
public function competences() 
{ 
    return $this->hasManyThrough('App\Competence', 'App\Competences_profil'); 
} 
+0

私はモデルの内側に機能しませんか!? 例を挙げてください。 – nabil

+0

モデル内のあなたの関数は大丈夫です。コントローラー内のリレーションシップを取得する必要があります '$ competences = \ App \ Competence :: with( 'competences') - > all();' – cssBlaster21895

+0

エラーが発生しました:未定義メソッドを呼び出す\ Database \ Query \ Builder :: all – nabil

0

この

コントローラ試してみてください。

use App/Profils 

public function getProfiles(Profils $profils){ 

    $profils = $profils; 

    if($request->has('varcate')){ 

     $varcate = $request->get('varcate'); 
     $profils = $profils->whereHas('fonctions', function ($query) use ($varcate){ 
         $query->whereHas('category', function ($subQuery) use ($varcate) { 
           $subQuery->where('category.id',$varcate); 
         }); 
        }); 
    } 

    if($request->has('varfonction')){ 

     $varfonction = $request->get('varfonction'); 
     $profils = $profils->whereHas('fonctions', function ($query) use ($varfonction){ 
         $query->where('fonctions.id',$varfonction); 
       }); 
    } 

    if($request->has('varstate')){ 

     $varstate = $request->get('varstate'); 
     $profils = $profils->whereHas('citys', function ($query) use ($varstate){ 
         $query->whereHas('states', function ($subQuery) use ($varstate) { 
           $subQuery->where('states.id',$varstate); 
         }); 
        }); 
    } 

    if($request->has('varcity')){ 

     $varcity = $request->get('varcity'); 
     $profils = $profils->whereHas('citys', function ($query) use ($varcity){ 
         $query->where('citys.id',$varcity); 
     }); 

    } 


    $profils = $profils->paginate(30); 

    return view('profiles',compact('profils')) 
} 

profils

public function fonctions(){ 
    return $this->belongsTo('App\fonctions','fonctions_id'); 
} 

public function citys(){ 
    return $this->belongsTo('App\citys','citys_id'); 
} 

public function competences() 
{ 
    return $this->belongsToMany('App\Competence'); 
} 

fonction

public function fonction(){ 
    return $this->belongsTo('App\category','category_id'); 
} 

市内

public function states(){ 
    return $this->belongsTo('App\states','state_id'); 
} 

ビュー:

@foreach($profils as $profil) 
     @foreach($profil->competences as $competence) 
      {{$competence->titre}} 
     @endforeach 
@endforeach 
+0

$ profile querybuilderをelequontに変更する必要がありますか? 私はRequet全体をコピーしないうちに、上記の完全な要求を見つけてください。 – nabil

+0

あなたは同様の雄弁な方法ですべてのリクエストを変換することができます – Parithiban

+0

同じこと:lwillaya、lmetier、lcommune、変更なし? – nabil

関連する問題