Laravel Belongsto много отношений с дополнительной колонкой - PullRequest
0 голосов
/ 05 сентября 2018

Я столкнулся с проблемой в моем проекте. У меня есть связь с дополнительным полем.

Например, у меня есть две таблицы User и Social table и сводная таблица с именем 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 голосов
/ 05 сентября 2018

Я полагаю, у вас есть это:

Социальный <-> Социальный пользователь ['id', 'social_id', 'user_id', 'url'] <-> Пользователь

Чтобы прикрепить Social к Пользователю, вам нужно сделать следующее:

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