【问题标题】:Laravel - Many to many not pulling back resultsLaravel - 多对多不撤回结果
【发布时间】:2014-06-09 04:40:32
【问题描述】:

我有一个包含以下内容的用户类:

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

它为学校返回一个空值。我错过了什么吗?

【问题讨论】:

    标签: laravel many-to-many relationship eloquent


    【解决方案1】:

    您已声明:

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

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

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

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

    【讨论】:

    • 它们可能属于多个,我不想做这个限制。
    • 完全不是我的问题,只是想想你是不是对的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2019-05-10
    • 2022-01-01
    • 2017-10-03
    相关资源
    最近更新 更多