2014-04-24 71 views
0

我有一個User類有以下:Laravel - 多對多不拉回導致

public function school() 
{ 
    return $this->belongsToMany('School'); 
} 

我有以下的學校類:

public function user() 
{ 
    return $this->belongsToMany('User'); 
} 

創建我的數據透視表使用樞軸發生器,這裏是它的遷移:

public function up() 
{ 
    Schema::create('school_user', function(Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('school_id')->unsigned()->index(); 
     $table->foreign('school_id')->references('id')->on('schools')->onDelete('cascade'); 
     $table->integer('user_id')->unsigned()->index(); 
     $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 
     $table->boolean('admin'); 
     $table->timestamps(); 
    }); 
} 

在用戶表中只有一個項目,學校表和數據透視表。當我做

$user = User::where('email', '=', Input::get('email'))->first(); 
$schools = $user->schools; 
return Response::json([ 
    'success' => true, 
    'user' => $user->toArray(), 
    'schools' => $schools 
]); 

它返回學校空。我錯過了什麼嗎?

回答

0

您已經聲明:

public function school() 
{ 
    return $this->belongsToMany('School'); 
} 

但使用$user->schools,你應該在函數聲明更改爲schools

public function schools() 
{ 
    //... 
} 

還要確保你使用了正確的關係,我因爲一個用戶可能屬於只有一所學校(邏輯上),因此混淆。

+0

他們可能屬於多個,我不想做這個限制。 – Jhorra

+0

不是我的問題,只是認爲如果你是對的。 –