Laravel Belongsto与其他专栏有很多关系

时间:2018-09-05 11:35:38

标签: php database laravel eloquent relationship

我的项目遇到了问题。我与其他字段有一个多属关系。

例如,我有两个表“用户”和“社交”表以及一个名为“ social_user”的数据透视表。这里的用户模型是

public function socialinfos() {
    return $this->belongsToMany(Social::class)->withPivot('id')->whereNull('deleted_at');
}

我的social_user表是

Schema::create('social_user', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->bigInteger('user_id');
    $table->string('social_id')->nullable();
    $table->string('url')->nullable();
});

在这里,我属于多个关系,其中有一个由用户提交的附加url字段。当我想在数据库中添加此信息时,它运行不正常。它显示错误

Array to string conversion (SQL: insert into `social_user` (`social_id`, `url`, `user_id`) values (2, jahid56, 9))

这是我尝试过的

$user = Auth::user();
$speakers  = $request->get('provider'); // related ids
$pivotData = array_fill(0, count($speakers), ['url' => $request->get('social')]);
$syncData  = array_combine($speakers, $pivotData);

if ($request->get('provider')) {
    $user->socialinfos()->sync($syncData);
} else {
    $user->socialinfos()->sync([]);
}

请帮助我解决这个问题

1 个答案:

答案 0 :(得分:0)

我想你有这个:

社交<->社交用户['id','social_id','user_id','url'] <->用户

要将社交对象附加到用户,您可以执行以下操作:

Auth::user()->socialInfos()->attach($social_id, ['url' => 'facebokk.com/user']);