拉拉维尔多对多关系同步"Illegal offset type"



我是幼虫5.6的新手,并试图学习它。 我有以下代码:

$gr = group::create([
          'book_id' => $book_id,
      ]);
$owner = Book::where('id', $book_id)->pluck('user_id');
$id1 = Auth::user()->id;
$gr->users()->sync([$id1 => ['last_seen_id' => -1], $owner => ['last_seen_id' => -1]]);

在数据透视表中group_user我有一列last_seen_id,但我收到错误:

"非法偏移类型">

所以我尝试将代码更改为以下内容:

$gr = group::create([
          'book_id' => $book_id,
      ]);
$owner = Book::where('id', $book_id)->pluck('user_id');
$gr->users()->sync([Auth::user()->id => ['last_seen_id' => -1], $owner => ['last_seen_id' => -1]]);

但是我不断收到同样的错误,请帮助我了解问题所在以及如何解决。

在你的代码中,$owner表示对象,而你的代码看起来你正在尝试让它成为一个数组,这两种类型都不能用作数组索引,你在最后一行有。 也许您只想获取一个所有者 ID,所以我猜您需要获取的是

$owner = Book::where('id', $book_id)->first();
if(!empty($owner)) {
    $owner = $owner->user_id;
} else {
    throw new Exception();
}

最新更新