laravel多对多关系同步“非法偏移类型”

时间:2018-08-08 11:42:33

标签: php laravel eloquent

我是larvel 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]]);

但是我仍然遇到相同的错误,请帮助我了解错误的原因和解决方法。

1 个答案:

答案 0 :(得分:0)

在您的代码中,$owner代表对象,并且按照您的代码,您似乎正试图使其成为数组,两种类型都不能用作数组索引,您在最后一行。 也许您只想获取一个所有者ID,所以我猜您需要获取的是

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