2016-04-23 57 views
0

私は3つのテーブルを持っています。 ID、電子メール、パスワード、ユーザー名などLaravel関係は

teams

Image of my teams table structure

members

Image of my members table structure

私のメンバー表は、ユーザーがチームの一部であるのを追跡するために使用されます。

私が作成しようとしているのは、訪れたときに、ユーザーが現在参加しているすべてのチームを表示するルートです。

これは私が試したものです:

Team.php

<?php 

namespace EG; 

use Illuminate\Database\Eloquent\Model; 

class Team extends Model 
{ 

    protected $table = 'teams'; 

    public function members() 
    { 
     return $this->hasMany('Member'); 
    } 
} 

Member.php

<?php 

namespace EG; 

use Illuminate\Database\Eloquent\Model; 

class Member extends Model 
{ 

    protected $table = 'members'; 

    public function teams() 
    { 
     return $this->belongsTo('Team'); 
    } 
} 

routes.php

Route::get('/test', function() { 
    $member = EG\Member::where('user_id', '=', Auth::user()->id)->get(); 
    $teams = $member->teams; 
    foreach($teams as $team) { 
     echo $team->team_name."<br>"; 
    } 
}); 

私は/テストを訪れたとき、私はこのエラーを取得しています:

あなたたちはより良い私が作成しようとしているかを理解できるように、3210

ただ、ここで私は手続き的にそれを行うだろうかです:

$sql = “SELECT team_id FROM members WHERE user_id = ‘“.Auth::user()->id.”';”; 
$result = mysqli_querry($conn, $sql); 
while ($row = mysqli_fetch_assoc($result)) 
{ 
    $sql = “SELECT * FROM teams WHERE id = ‘“.$row[’team_id'].”';”; 
    $result = mysqli_query($conn, $sql); 
    while ($team = mysqli_fetch_assoc($result)) 
    { 
     echo $team[’team_name’].”<br>”; 
    } 
} 

答えて

0

->get()方法は、コレクションを返します。

$member = EG\Member::where('user_id', '=', Auth::user()->id)->first(); 
+0

おかげで、働いているようだ:

あなたは、単一のモデルが必要な場合

->first()メソッドを使用します。私は今、クラス 'チーム'が存在しないというエラーが表示されています。私はそれがMember.phpのこの行に問題があると仮定しています:return $ this-> belongsTo( 'Team'); – iJamesPHP2

+0

私はこれを修正しました。私は今、このエラーが発生しています:最初のエラーを修正するforeach() – iJamesPHP2

+0

の引数が無効です: 'return $ this-> belongsTo( 'App \ Team');'。これを試して、最新のエラーを修正してください: '$ teams = $ member-> teams() - > get()' –

関連する問題