Laravel - 很多人都没有退缩结果

时间:2014-04-24 04:15:54

标签: laravel many-to-many relationship eloquent

我有一个User类,其中包含以下内容:

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

我有一个学校课程,内容如下:

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

我使用pivot生成器创建我的数据透视表,这里是它的迁移:

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
]);

它为学校返回null。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您已声明:

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

但是使用$user->schools,您应该将函数声明更改为schools

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

另外请确保您正在使用正确的关系,我很困惑,因为一个用户可能只属于一所学校(逻辑上)。