【发布时间】:2021-05-01 12:53:10
【问题描述】:
各位聪明人,
如果有人能帮帮我,我有点卡在迁移和逻辑问题上。
我想将一个用户 ID 链接到另一个用户 ID,例如我使用电子邮件注册,然后我想用不同的电子邮件将我的帐户链接到该原始帐户,我正在尝试做一些逻辑使其高效。
到目前为止我已经这样做了,但我不确定这是否正确
public function up()
{
Schema::create('link_user', function (Blueprint $table) {
$table->bigInteger('main_user_id')->unsigned()->index();
$table->foreign('main_user_id')->references('id')->on('users')->onDelete('cascade');
$table->bigInteger('linked_user_id')->unsigned()->index();
$table->foreign('linked_user_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('link_user');
}
我只是不确定要在用户模型中放入什么,因为这两个都将是 user_id,如果我的大脑被炸了,我可能做错了,并且不确定我是否做对了
我希望我最终能做这样的事情......
$newUser->user()->syncWithoutDetaching($request->user_id);
请提供任何帮助
解决了!!!
public function up()
{
Schema::create('provider_user', function (Blueprint $table) {
$table->bigInteger('provider_id')->unsigned()->index();
$table->foreign('provider_id')->references('id')->on('providers');
$table->bigInteger('user_id')->unsigned()->index();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->primary(['provider_id', 'user_id']);
});
}
将此添加到用户模型中
public function linkedUser()
{
return $this->belongsToMany(LinkAccount::class, 'link_account_user', 'linked_user_id', 'main_user_id');
}
添加了一个类
class LinkAccount extends Pivot
{ protected $table = "link_account_user";
protected $guarded = [];
}
终于做到了
$newUser->linkedUser()->syncWithoutDetaching($request->user_id);
希望这对其他人有所帮助,感谢@GlenUK 朝着正确的方向前进
【问题讨论】:
标签: mysql laravel eloquent pivot-table relationship