我知道这个问题已经问了很多,但是所有答案似乎都不适合我-或者至少我发现的问题与数据透视表有关。
我有一个多对多关系(用户-约会),该关系由数据透视表“ apointment_user”连接,请参见下面的迁移。
Schema::create('appointment_user', function (Blueprint $table) {
$table->unsignedInteger('user_id')->nullable();
$table->foreign('user_id')->references('id')->on('users');
$table->unsignedInteger('appointment_id')->nullable();
$table->foreign('appointment_id')->references('id')->on('appointments');
$table->primary(['user_id','appointment_id']);
$table->timestamps();
});
Schema::create('appointments', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->dateTime('date');
$table->string('location');
$table->dateTime('departure');
$table->timestamps();
});
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->date('last_login')->nullable();
$table->rememberToken();
$table->timestamps();
$table->softDeletes();
});
class User extends Model {
protected $with = ['appointments'];
public function appointments() : BelongsToMany {
return $this->belongsToMany(Appointment::class);
}
}
class Appointment extends Model {
public function users() : BelongsToMany {
return $this->belongsToMany(User::class);
}
}
我有一个ID为1
的用户,大约有10个约会,我确实将其附加到播种机中的关系中。数据透视表按预期有10条记录(用户ID始终为1
)。
但是,如果我使用dd(User::find(1))
转储User对象,则该关系始终是一个空集合。但是,(角色之间的)1:n关系很好。
有人看到我想念的东西吗?任何帮助表示赞赏。 非常感谢和问候
我刚刚尝试了其他类型的倾销。我只是将我的User-Object返回为JSON响应,并且该关系中充满了10个约会...很奇怪。
答案 0 :(得分:0)
尽管您的表名和列名似乎与Laravel所猜测的一样,但是您是否尝试过显式显示这些名称?
class User extends Model {
protected $with = ['appointments'];
public function appointments() : BelongsToMany {
return $this->belongsToMany(Appointment::class, 'appointment_user', 'user_id', 'appointment_id');
}
}
class Appointment extends Model {
public function users() : BelongsToMany {
return $this->belongsToMany(User::class, 'appointment_user', 'appointment_id', 'user_id');
}
}